SQL?Server查詢所有表數(shù)據(jù)量的代碼實(shí)例
1.查詢當(dāng)前數(shù)據(jù)庫中所有用戶表的數(shù)據(jù)量(即每個表的記錄數(shù))
SELECT a.name , b.rows FROM sysobjects AS a
INNER JOIN sysindexes AS b ON a.id = b.id
WHERE ( a.type = 'u' ) AND ( b.indid IN ( 0, 1 ) )
ORDER BY b.rows DESC
或
SELECT
t.NAME AS TableName,
s.Name AS SchemaName,
p.rows AS RowCounts
FROM
sys.tables t
INNER JOIN
sys.schemas s ON t.schema_id = s.schema_id
INNER JOIN
sys.partitions p ON t.object_id = p.object_id
WHERE
p.index_id IN (0, 1) -- 0 = heap table, 1 = clustered index
GROUP BY
t.Name, s.Name, p.Rows
ORDER BY
p.rows DESC;
說明:
sys.tables:獲取數(shù)據(jù)庫中所有用戶表。
sys.partitions:每個表(或分區(qū))在物理存儲層面的分區(qū)信息,包含記錄數(shù)(rows)。
index_id IN (0, 1):過濾掉非主數(shù)據(jù)行的分區(qū)(如非聚集索引的副本)。
2.在1的基礎(chǔ)上增加顯示數(shù)據(jù)庫名
SELECT
DB_NAME() AS DatabaseName,
t.NAME AS TableName,
s.Name AS SchemaName,
SUM(p.rows) AS RowCounts
FROM
sys.tables t
INNER JOIN
sys.schemas s ON t.schema_id = s.schema_id
INNER JOIN
sys.partitions p ON t.object_id = p.object_id
WHERE
p.index_id IN (0, 1)
GROUP BY
t.Name, s.Name
ORDER BY
RowCounts DESC;
3.跨所有數(shù)據(jù)庫查詢每個數(shù)據(jù)庫中每張表的數(shù)據(jù)量(行數(shù))
需要跨多個數(shù)據(jù)庫查,可以使用 sp_MSforeachdb 或手動遍歷數(shù)據(jù)庫執(zhí)行2中語句。
跨所有數(shù)據(jù)庫查詢每個數(shù)據(jù)庫中每張表的數(shù)據(jù)量(行數(shù)),使用 sp_MSforeachdb 系統(tǒng)存儲過程完成:
EXEC sp_MSforeachdb N'
USE [?];
IF DB_ID() NOT IN (1, 2, 3, 4) -- 排除系統(tǒng)數(shù)據(jù)庫(master, tempdb, model, msdb)
BEGIN
PRINT ''Database: [?]'';
SELECT
DB_NAME() AS DatabaseName,
s.name AS SchemaName,
t.name AS TableName,
SUM(p.rows) AS RowCounts
FROM
sys.tables t
INNER JOIN
sys.schemas s ON t.schema_id = s.schema_id
INNER JOIN
sys.partitions p ON t.object_id = p.object_id
WHERE
p.index_id IN (0, 1)
GROUP BY
s.name, t.name
ORDER BY
RowCounts DESC;
END
';
說明:
sp_MSforeachdb:遍歷所有數(shù)據(jù)庫。
USE [?]:在遍歷時(shí)切換數(shù)據(jù)庫上下文。
IF DB_ID() NOT IN (…):排除系統(tǒng)數(shù)據(jù)庫。
每個數(shù)據(jù)庫都會輸出一個標(biāo)題,然后列出其所有表及記錄數(shù)。
注意事項(xiàng):
該語句需以 sa 或具有跨庫權(quán)限的賬戶執(zhí)行。
sp_MSforeachdb 是未文檔化的存儲過程,雖然廣泛使用但微軟不推薦用于關(guān)鍵任務(wù)。如果需要更穩(wěn)健的版本可考慮自己實(shí)現(xiàn)游標(biāo)版本。
總結(jié)
到此這篇關(guān)于SQL Server查詢所有表數(shù)據(jù)量的文章就介紹到這了,更多相關(guān)SQLServer查詢所有表數(shù)據(jù)量內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
sqlserver之datepart和datediff應(yīng)用查找當(dāng)天上午和下午的數(shù)據(jù)
這篇文章主要介紹了sqlserver之datepart和datediff應(yīng)用查找當(dāng)天上午和下午的數(shù)據(jù),非常不錯,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08
數(shù)據(jù)庫性能優(yōu)化三:程序操作優(yōu)化提升性能
程序訪問優(yōu)化也可以認(rèn)為是訪問SQL語句的優(yōu)化,一個好的SQL語句是可以減少非常多的程序性能的,下面列出常用錯誤習(xí)慣,并且提出相應(yīng)的解決方案2013-01-01
SQL語句 操作全集 學(xué)習(xí)mssql的朋友一定要看
SQL操作全集 下列語句部分是Mssql語句,不可以在access中使用。2009-03-03
sql server中判斷表或臨時(shí)表是否存在的方法
這篇文章主要介紹了sql server中判斷表或臨時(shí)表是否存在的方法,需要的朋友可以參考下2015-11-11
SQLServer 2000 數(shù)據(jù)庫同步詳細(xì)步驟[兩臺服務(wù)器]
成功實(shí)現(xiàn)SQL Server 2000 數(shù)據(jù)庫同步[一臺服務(wù)器,一臺動態(tài)IP的備份機(jī)],詳細(xì)步驟說明。2010-07-07
安裝SQL Server 2016出錯提示:需要安裝oracle JRE7 更新 51(64位)或更高版本問題的解決方法
這篇文章主要介紹了安裝SQL Server 2016出錯提示:需要安裝oracle JRE7 更新 51(64位)或更高版本問題的解決方法,需要的朋友可以參考下2018-03-03
sqlserver添加sa用戶和密碼的實(shí)現(xiàn)
這篇文章主要介紹了sqlserver添加sa用戶和密碼的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04

