本文共 2882 字,大约阅读时间需要 9 分钟。
1 ;WITH NonClustedIndexColumn AS 2 ( 3 SELECT dataid,column_id,c.object_id, MAX(c.dataneme) dataneme FROM 4 sys.index_columns d 5 INNER JOIN (SELECT index_id dataid,name dataneme ,* FROM sys.indexes WHERE index_id > 1 6 UNION ALL 7 SELECT a.index_id dataid,a.name dataneme, b.* FROM sys.indexes a 8 INNER JOIN sys.indexes b ON a.object_id = b.object_id AND b.index_id = 1 9 ) c ON c.object_id = d.object_id AND d.index_id = c.index_id10 GROUP BY dataid,column_id,c.object_id11 ),NonClustedIndexSize12 AS(13 SELECT --a.name,a.max_length,b.name,c.index_id14 OBJECT_NAME(a.object_id) name ,a.object_id,MAX(c.dataneme) index_name, c.dataid15 ,SUM(CASE WHEN b.name IN ('varchar','nvarchar') THEN 2+a.max_length ELSE 0 END) [Variable_Data]16 ,SUM(CASE WHEN b.name not IN ('varchar','nvarchar') THEN a.max_length ELSE 0 END) [Fixed_Data]17 ,CEILING(SUM(CASE WHEN a.is_nullable = 1 THEN 1 ELSE 0 END)*1.0 /8) [NullByte] 18 ,CASE WHEN c.dataid <=1 THEN 2 ELSE 1 END [RowHeader]19 ,CASE WHEN c.dataid <=1 THEN 2 ELSE 0 END [Fixed_Length]20 ,MAX( CASE WHEN b.name IN ('varchar','nvarchar') THEN 2 ELSE 0 END) [Variable_Length]21 , 2 [Column_Count]22 FROM sys.columns a23 INNER JOIN sys.types b ON a.user_type_id = b.user_type_id24 INNER JOIN NonClustedIndexColumn c ON a.object_id = c.object_id AND a.column_id = c.column_id25 WHERE a.object_id >100 AND dataid > 1 -- AND OBJECT_NAME(a.object_id) = 'userorder_package'26 GROUP BY a.object_id,c.dataid27 )28 , ClustedHeapSize AS(29 SELECT --a.name,a.max_length,b.name,c.index_id30 OBJECT_NAME(a.object_id) name ,a.object_id,MAX(c.name) index_name, c.index_id31 ,SUM(CASE WHEN b.name IN ('varchar','nvarchar') THEN 2+a.max_length ELSE 0 END) [Variable_Data]32 ,SUM(CASE WHEN b.name not IN ('varchar','nvarchar') THEN a.max_length ELSE 0 END) [Fixed_Data]33 ,CEILING(SUM(CASE WHEN a.is_nullable = 1 THEN 1 ELSE 0 END)*1.0 /8) [NullByte] 34 ,CASE WHEN c.index_id <=1 THEN 2 ELSE 1 END [RowHeader]35 ,CASE WHEN c.index_id <=1 THEN 2 ELSE 0 END [Fixed_Length]36 ,MAX( CASE WHEN b.name IN ('varchar','nvarchar') THEN 2 ELSE 0 END) [Variable_Length]37 , 2 [Column_Count]38 FROM sys.columns a39 INNER JOIN sys.types b ON a.user_type_id = b.user_type_id40 INNER JOIN sys.indexes c ON c.object_id = a.object_id --AND d.index_id = c.index_id41 WHERE a.object_id >100 AND c.index_id <= 142 GROUP BY a.object_id,c.index_id )43 ,RowSize AS44 (45 SELECT name = MAX(name),OBJECT_ID,rowsize=SUM([Variable_Data]+[Fixed_Data]+[NullByte]+[RowHeader]+[Fixed_Length]+[Variable_Length]+[Column_Count])46 FROM (47 SELECT * FROM NonClustedIndexSize48 UNION ALL49 SELECT * FROM ClustedHeapSize50 ) a51 GROUP BY OBJECT_ID52 )53 54 SELECT * FROM rowsize
转载地址:http://cnxkm.baihongyu.com/