SQL 查找数据库中每个 table 的行数
SQL to find the number of rows per table in a database
我的目标是创建当前数据库中所有 table 的电子表格,该电子表格将显示 table 名称和每个 table 中的行数。一个好处是还能够在 table 中最后输入或更改任何内容时显示。不过我不确定最后一部分是否可行。
这就是我目前所拥有的...没什么大不了的,但我就是想不通如何向其中添加每 table 行计数。
SELECT name, type, type_desc
FROM [scheme].sys.all_objects
WHERE type = 'U'
CREATE TABLE #T
(TABLENAME VARCHAR(100) ,
COUNT INT)
INSERT INTO #T
EXEC SP_MSFOREACHTABLE 'SELECT ''?'' ,COUNT(*) FROM ?'
SELECT * FROM #T
DROP TABLE #T
您可以对系统目录视图使用此查询:
SELECT
t.NAME AS TableName,
p.rows AS RowCounts
FROM
sys.tables t
INNER JOIN
sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN
sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
WHERE
t.NAME NOT LIKE 'dt%'
AND t.is_ms_shipped = 0
AND i.OBJECT_ID > 255
GROUP BY
t.Name, p.Rows
ORDER BY
t.Name
获得想要的结果 - 当前数据库中的所有表,以及每个表中的行数。
我的目标是创建当前数据库中所有 table 的电子表格,该电子表格将显示 table 名称和每个 table 中的行数。一个好处是还能够在 table 中最后输入或更改任何内容时显示。不过我不确定最后一部分是否可行。
这就是我目前所拥有的...没什么大不了的,但我就是想不通如何向其中添加每 table 行计数。
SELECT name, type, type_desc
FROM [scheme].sys.all_objects
WHERE type = 'U'
CREATE TABLE #T
(TABLENAME VARCHAR(100) ,
COUNT INT)
INSERT INTO #T
EXEC SP_MSFOREACHTABLE 'SELECT ''?'' ,COUNT(*) FROM ?'
SELECT * FROM #T
DROP TABLE #T
您可以对系统目录视图使用此查询:
SELECT
t.NAME AS TableName,
p.rows AS RowCounts
FROM
sys.tables t
INNER JOIN
sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN
sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
WHERE
t.NAME NOT LIKE 'dt%'
AND t.is_ms_shipped = 0
AND i.OBJECT_ID > 255
GROUP BY
t.Name, p.Rows
ORDER BY
t.Name
获得想要的结果 - 当前数据库中的所有表,以及每个表中的行数。