한때 누구보다고 SQL 에 자신 있다는 생각을 가진적이 있었다.. 하지만 현 필라넷 정원혁 상무님 강의를
들은후 그 마음을 사라지고 말았다.
데이터베이에서 인덱스가 얼마나 중요한지를 깨닫게 되었다.
/*
sp_name : usp_allReindex
sp_Explanation : 디비 서버의 모든 테이블에 대해 DBCC DBREINDEX를 실행합니다.
Input Parameters : None
Output Parameters : None
Usage : exec usp_allReindex
*/
Create PROCEDURE usp_allReindex
AS
-- 변수 선언
DECLARE @SQLString varchar(300), @dbname varchar(30), @tblname varchar(30)
SET NOCOUNT ON
-- 테이블 리스트 저장 테이블
CREATE TABLE #tables
(
tblname varchar(30)
)
-- 한 서버의 디비 목록을 위한 커서 시작
DECLARE cur_dbList CURSOR
FOR
SELECT name FROM master..sysdatabases WHERE name NOT IN ('master','model','msdb','tempdb') ---- (1)
OPEN cur_dbList
FETCH cur_dbList INTO @dbname
WHILE @@fetch_status = 0
BEGIN
TRUNCATE TABLE #tables
SET @SQLString = 'insert into #tables select name from ' + @dbname + '..sysobjects where type = ''U'''
EXEC (@SQLString)
-- 각 디비의 테이블 목록을 위한 커서 시작
DECLARE cur_tblList CURSOR
FOR
SELECT tblname FROM #tables
OPEN cur_tblList
FETCH cur_tblList INTO @tblname
WHILE @@fetch_status = 0
BEGIN
SET @SQLString = 'DBCC DBREINDEX (''' + @dbname + '..' + @tblname + ''', '''', 90)' ---- (2)
EXEC (@SQLString)
FETCH cur_tblList INTO @tblname
END
CLOSE cur_tblList
DEALLOCATE cur_tblList
FETCH cur_dbList INTO @dbname
END
CLOSE cur_dbList
DEALLOCATE cur_dbList
DROP TABLE #tables
GO