All*_*nde 16 sql sql-server sql-server-2005
我正在使用SQL Server 2005,并想知道如何获得所有表的列表,其中包含每个表中的记录数.
我知道我可以使用sys.tables视图获取表格列表,但我无法找到计数.
谢谢
bri*_*ian 39
从这里:http://web.archive.org/web/20080701045806/http : //sqlserver2000.databases.aspfaq.com : 80/how-do-i-get-a-list-of-sql-server-tables -and-其行,counts.html
SELECT
[TableName] = so.name,
[RowCount] = MAX(si.rows)
FROM
sysobjects so,
sysindexes si
WHERE
so.xtype = 'U'
AND
si.id = OBJECT_ID(so.name)
GROUP BY
so.name
ORDER BY
2 DESC
Run Code Online (Sandbox Code Playgroud)
小智 22
对于它的价值,在SQL 2008中不推荐使用sysindexes系统表.上面的代码仍然有效,但这里的查询在SQL 2008系统视图中继续运行.
select
schema_name(obj.schema_id) + '.' + obj.name,
row_count
from (
select
object_id,
row_count = sum(row_count)
from sys.dm_db_partition_stats
where index_id < 2 -- heap or clustered index
group by object_id
) Q
join sys.tables obj on obj.object_id = Q.object_id
Run Code Online (Sandbox Code Playgroud)
我可以补充一点,sysindexes.rows是行数的近似值.DBCC UPDATEUSAGE如果你需要一个更准确的价值,我会跑一个.我们在数据库中遇到了这个问题,其中包含超过47-50万行的表格,我们认为我们每个都丢失了大约50万个.
| 归档时间: |
|
| 查看次数: |
34056 次 |
| 最近记录: |