연구개발/DBA

인덱스 레벨별 사이즈 비교

HEAD1TON 2012. 5. 10. 19:02

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TIndexDep]') AND type in (N'U'))
    DROP TABLE dbo.TIndexDep
GO

CREATE TABLE dbo.TIndexDep
(
    col1    INT,
    col2    CHAR(20),
    col3    CHAR(900),
    col4    CHAR(7000)
)
GO

SET NOCOUNT ON

DECLARE @i INT = 1
WHILE (@i < 500000)
BEGIN
    INSERT INTO dbo.TIndexDep
        SELECT @i, CAST(@i as CHAR(20)), CAST(@i as CHAR(900)), CAST(@i as CHAR(7000))
        SET @i += 1
END
SET NOCOUNT OFF


SELECT * FROM TIndexDep

CREATE NONCLUSTERED INDEX IX_col2 ON dbo.TIndexDep(col2)

CREATE NONCLUSTERED INDEX IX_col3 ON dbo.TIndexDep(col3)



SELECT INDEXPROPERTY(OBJECT_ID('TIndexDep'), 'IX_col2', 'INDEXDEPTH')
SELECT INDEXPROPERTY(OBJECT_ID('TIndexDep'), 'IX_col3', 'INDEXDEPTH')

SELECT index_depth, index_level, record_count, page_count
FROM sys.dm_db_index_physical_stats(DB_ID(), OBJECT_ID('TIndexDep'), 2 /* IX_col2 */, NULL, 'DETAILED')

SELECT index_depth, index_level, record_count, page_count
FROM sys.dm_db_index_physical_stats(DB_ID(), OBJECT_ID('TIndexDep'), 3 /* IX_col3 */, NULL, 'DETAILED')