kri*_*tof 184 database sql-server
如何列出数据库中每个表的行数.一些相当于
select count(*) from table1
select count(*) from table2
...
select count(*) from tableN
Run Code Online (Sandbox Code Playgroud)
我将发布一个解决方案,但欢迎其他方法
mar*_*c_s 291
如果您正在使用SQL Server 2005及更高版本,您还可以使用:
SELECT
t.NAME AS TableName,
i.name as indexName,
p.[Rows],
sum(a.total_pages) as TotalPages,
sum(a.used_pages) as UsedPages,
sum(a.data_pages) as DataPages,
(sum(a.total_pages) * 8) / 1024 as TotalSpaceMB,
(sum(a.used_pages) * 8) / 1024 as UsedSpaceMB,
(sum(a.data_pages) * 8) / 1024 as DataSpaceMB
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
INNER JOIN
sys.allocation_units a ON p.partition_id = a.container_id
WHERE
t.NAME NOT LIKE 'dt%' AND
i.OBJECT_ID > 255 AND
i.index_id <= 1
GROUP BY
t.NAME, i.object_id, i.index_id, i.name, p.[Rows]
ORDER BY
object_name(i.object_id)
Run Code Online (Sandbox Code Playgroud)
在我看来,它比sp_msforeachtable输出更容易处理.
Eri*_*son 97
我在http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=21021上找到的片段帮助了我:
select t.name TableName, i.rows Records
from sysobjects t, sysindexes i
where t.xtype = 'U' and i.id = t.id and i.indid in (0,1)
order by TableName;
Run Code Online (Sandbox Code Playgroud)
pet*_*tra 28
要在SQL Management Studio中获取该信息,请右键单击该数据库,然后选择"报告" - >"标准报告" - >"按表排列的磁盘使用情况".
小智 8
SELECT
T.NAME AS 'TABLE NAME',
P.[ROWS] AS 'NO OF ROWS'
FROM SYS.TABLES T
INNER JOIN SYS.PARTITIONS P ON T.OBJECT_ID=P.OBJECT_ID;
Run Code Online (Sandbox Code Playgroud)
如此处所示,这将返回正确的计数,其中使用元数据表的方法仅返回估计值.
CREATE PROCEDURE ListTableRowCounts
AS
BEGIN
SET NOCOUNT ON
CREATE TABLE #TableCounts
(
TableName VARCHAR(500),
CountOf INT
)
INSERT #TableCounts
EXEC sp_msForEachTable
'SELECT PARSENAME(''?'', 1),
COUNT(*) FROM ? WITH (NOLOCK)'
SELECT TableName , CountOf
FROM #TableCounts
ORDER BY TableName
DROP TABLE #TableCounts
END
GO
Run Code Online (Sandbox Code Playgroud)