1. 程式人生 > >SQL Server遍歷所有表統計行數

SQL Server遍歷所有表統計行數

DECLARE CountTableRecords CURSOR READ_ONLY FOR 
  SELECT sst.name, 
         Schema_name(sst.schema_id) 
  FROM   sys.tables sst 
  WHERE  sst.TYPE = 'U' 
DECLARE @name   VARCHAR(80), 
        @schema VARCHAR(40) 

OPEN CountTableRecords 

FETCH NEXT FROM CountTableRecords INTO @name, @schema
WHILE ( @@FETCH_STATUS <> -1 ) BEGIN IF ( @@FETCH_STATUS <> -2 ) BEGIN PRINT @name DECLARE @sql NVARCHAR(1024) SET @sql='DECLARE @count INT SELECT @count=COUNT(1) FROM ' + Quotename(@schema) + '
.' + Quotename(@name) +' PRINT @count' EXEC Sp_executesql @sql END FETCH NEXT FROM CountTableRecords INTO @name, @schema END CLOSE CountTableRecords DEALLOCATE CountTableRecords GO

主要是為了找出資料庫裡面記錄最多的表,用來做效能測試用。

來自SQL Server 2005/2008遍歷所有表統計行數,實測在SQL Server 2012 LocalDB上可用。