SQL Server中統計每一個表行數的疾速辦法。本站提示廣大學習愛好者:(SQL Server中統計每一個表行數的疾速辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是SQL Server中統計每一個表行數的疾速辦法正文
我們都曉得用聚合函數count()可以統計表的行數。假如須要統計數據庫每一個表各自的行數(DBA能夠有這類需求),用count()函數就必需為每一個表生成一個靜態SQL語句並履行,能力獲得成果。之前在互聯網上看到有一種很好的處理辦法,忘卻出處了,寫上去分享一下。
該辦法應用了sysindexes 體系表供給的rows字段。rows字段記載了索引的數據級的行數。處理辦法的代碼以下:
select schema_name(t.schema_id) as [Schema], t.name as TableName,i.rows as [RowCount]
from sys.tables as t, sysindexes as i
where t.object_id = i.id and i.indid <=1
該辦法銜接了sys.tables視圖,從中找出表名和schema_id,再經由過程schema_name函數獲得表的架構名。挑選前提i.indid <=1 只選集合索引或許堆,每一個表至多有一個堆或許集合索引,從而包管為每一個表前往一行。以下是在我的AdventureWorks數據庫中運轉該查詢前往的部門成果:
Schema TableName RowCount
——————– ——————– ———–
Sales Store 701
Production ProductPhoto 101
Production ProductProductPhoto 504
Sales StoreContact 753
Person Address 19614
Production ProductReview 4
Production TransactionHistory 113443
Person AddressType 6
該辦法的長處有:
1.運轉速度異常快。
2.因為不拜訪用戶表,不會在用戶表上放置鎖,不會影響用戶表的機能。
3.可以將該查詢寫成子查詢、CTE或許視圖,與其它查詢聯合應用。