需要明确SCHEMA, TABLE, COMPRESSION TYPE:
USE DatabaseNameHere; GO -- Get estimated data compression savings and other index info -- for every index in the specified table SET NOCOUNT ON; DECLARE @SchemaName SYSNAME = N'SchemaNameHere'; -- Specify schema name DECLARE @TableName SYSNAME = N'TableNameHere'; -- Specify table name DECLARE @IndexID INT = 1; DECLARE @CompressionType NVARCHAR(60) = N'CompressionTypeHere' -- Specify data compression type (PAGE, ROW, or NONE) -- Get table name, row count, and compression status -- for clustered index or heap table SELECT OBJECT_NAME([object_id]) AS [ObjectName], SUM([Rows]) AS [RowCount], data_compression_desc AS [CompressionType] FROM sys.partitions WHERE index_id < 2 -- ignore the partitions from the non-clustered index if any AND OBJECT_NAME([object_id]) = @TableName GROUP BY [object_id], data_compression_desc ORDER BY SUM([Rows]) DESC; -- Breaks down buffers used by current database by object (table, index) in the buffer pool SELECT OBJECT_NAME(p.[object_id]) AS [ObjectName], p.index_id, COUNT(*)/128 AS [Buffer size(MB)], COUNT(*) AS [BufferCount], p.data_compression_desc AS [CompressionType] FROM sys.allocation_units AS a INNER JOIN sys.dm_os_buffer_descriptors AS b ON a.allocation_unit_id = b.allocation_unit_id INNER JOIN sys.partitions AS p ON a.container_id = p.hobt_id WHERE b.database_id = DB_ID() AND OBJECT_NAME(p.[object_id]) = @TableName AND p.[object_id] > 100 GROUP BY p.[object_id], p.index_id, p.data_compression_desc ORDER BY [BufferCount] DESC; -- Shows you which indexes are taking the most space in the buffer cache -- Get current and estimated size for every index in specified table DECLARE curIndexID CURSOR FAST_FORWARD FOR -- Get list of index IDs for this table SELECT s.index_id FROM sys.dm_db_index_usage_stats AS s WHERE OBJECT_NAME(s.[object_id]) = @TableName AND s.database_id = DB_ID() ORDER BY s.index_id; OPEN curIndexID; FETCH NEXT FROM curIndexID INTO @IndexID; -- Loop through every index in the table and run sp_estimate_data_compression_savings WHILE @@FETCH_STATUS = 0 BEGIN -- Get current and estimated size for specified index with specified compression type EXEC sp_estimate_data_compression_savings @SchemaName, @TableName, @IndexID, NULL, @CompressionType; FETCH NEXT FROM curIndexID INTO @IndexID; END CLOSE curIndexID; DEALLOCATE curIndexID; -- Index Read/Write stats for a single table SELECT OBJECT_NAME(s.[object_id]) AS [TableName], i.name AS [IndexName], i.index_id, SUM(user_seeks) AS [User Seeks], SUM(user_scans) AS [User Scans], SUM(user_lookups)AS [User Lookups], SUM(user_seeks + user_scans + user_lookups)AS [Total Reads], SUM(user_updates) AS [Total Writes] FROM sys.dm_db_index_usage_stats AS s INNER JOIN sys.indexes AS i ON s.[object_id] = i.[object_id] AND i.index_id = s.index_id WHERE OBJECTPROPERTY(s.[object_id],'IsUserTable') = 1 AND s.database_id = DB_ID() AND OBJECT_NAME(s.[object_id]) = @TableName GROUP BY OBJECT_NAME(s.[object_id]), i.name, i.index_id ORDER BY [Total Writes] DESC, [Total Reads] DESC; -- Get basic index information (does not include filtered indexes or included columns) --EXEC sp_helpindex @TableName; -- Get size and available space for files in current database SELECT name AS [File Name], physical_name AS [Physical Name], size / 128.0 AS [Total Size in MB], size / 128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS INT)/128.0 AS [Available Space In MB], [file_id] FROM sys.database_files;