2013-07-25 1 views
1

몇 개의 필드에 비 클러스터 색인을 작성했습니다. 이제 어떻게 인덱스에서 각 키의 크기를 볼 수 있습니까? 아니면 단순히 인덱스에서 사용한 필드 바이트 크기의 합계입니까?색인의 단일 키 크기

감사 토마스

+0

인덱스에 사용 된 열의 크기 합계, *** 리프레쉬에서 ** 클러스터링 인덱스 열의 크기 ** (테이블에 정의 된 경우) –

답변

0

내가 기대 테이블의 행입니다. 만약 내가 올바른 행을 항상 모든 데이터와 색인을 포함하는 오버 헤드를 추가합니다. 사용중인 데이터베이스를 말하지 않았으므로 결과가 다소 다를 수 있습니다.

SQL Server에서이 작업을 수행한다고 가정했는데 특수 시스템보기 및 테이블에서 많은 정보를 얻었습니다.

적어도이 쿼리는 행 데이터와 큰 개체 (varbinaries/이미지)를 포함하여 전체 크기를 제공하지만 일부는 따로 따로 제공합니다.이 크기를 복사하여 선택하지만 내 선택은 partition_stats. *입니다. 모양에 대한 최소한 별도의 통계를 얻을 행 것이다 data..you는

SELECT 
in_row_data_page_count * 8/1024 RowDataSizeMB, 
in_row_used_page_count * 8/1024 RowSizeMB, 
sys_schemas.name AS SchemaName 
,sys_objects.name AS TableName 
,sys_indexes.name AS IndexName 
,sys_indexes.type_desc AS IndexType 
,partition_stats.used_page_count * 8 AS TotalSizeKB 
,CAST(partition_stats.used_page_count * 8/1024.00 AS Decimal(10,3))AS TotalSizeMB 
,CAST(partition_stats.used_page_count * 8/1048576.00 AS Decimal(10,3)) AS TotalSizeGB 
FROM sys.dm_db_partition_stats partition_stats 
INNER JOIN sys.indexes sys_indexes 
ON partition_stats.[object_id] = sys_indexes.[object_id] 
AND partition_stats.index_id = sys_indexes.index_id 
AND sys_indexes.type_desc <> 'HEAP' 
INNER JOIN sys.objects sys_objects 
ON sys_objects.[object_id] = partition_stats.[object_id] 
INNER JOIN sys.schemas sys_schemas  
ON sys_objects.[schema_id] = sys_schemas.[schema_id] 
AND sys_schemas.name <> 'SYS' 
--WHERE partition_stats.[object_id] = object_id('dbo.TableName') 
ORDER BY 1,2,3,4 

그래도 난 전문가가 아니에요) 수학을 - 더 SQL 문을 포함하여,이에 대한 자세한 내용은이 링크에서 예를 들어 보면 .. .

http://www.sqlservercentral.com/Forums/Topic404843-793-1.aspx#bm568295

+0

Thanks , 전에 비슷한 것을했습니다. 내 색인 크기는 148424412 KB 또는 150 GB입니다. 그러나 인덱스의 필드는 int, nvarchar 100 바이트 크기이며 다른 int를 포함합니다. 이 합계는 108 바이트입니다. 216 억 바이트 또는 216GB를주는 20 억 개의 행이 있습니다. 이 216GB는 하한선이어야합니다. 나는 nvarchar (100)가 무언가를 괴롭히는 것으로 생각합니다. 내 인덱스 키의 크기를 정확히 파악하고 설정할 수있는 방법이 있습니까? – Prof