索引中单个键的大小

时间:2013-07-25 03:24:11

标签: sql indexing non-clustered-index

我在几个字段上构建了一个非聚集索引。现在我如何查看索引中每个键的大小,或者这只是我在索引中使用的字段字节大小的总和?

由于 托马斯

1 个答案:

答案 0 :(得分:0)

它在我期望的表格中的行中。如果我是正确的行总是包含所有数据和索引只是增加开销。由于您没有说明您正在使用哪个数据库,因此结果可能会有所不同。

我以为你是在SQL Server中做的 - 它在特殊的系统视图和表格中有很多信息,我在下面展示了一个视图。

至少这个查询会给你总大小(包括行数据和大对象(varbinaries / images),还有一些单独的。我复制了这个,所以请耐心等我添加 partition_stats。*,在选择列表中,您将获得至少对于blob和行数据的单独统计信息。您可以进行数学运算)

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