什么是有效的查询来计算SQL Server 2008中的表行?

时间:2010-12-05 16:09:32

标签: sql sql-server sql-server-2008

在SQL Server 2008中计算表行的有效查询是什么

3 个答案:

答案 0 :(得分:5)

要获得准确的答案,在规范化数据库中获取表中确切行数的合理方法是执行:

select count(*) from table;

在没有任何索引的表上,数据库将执行全表扫描。如果您已索引非空列,则数据库可能会使用(可能小得多)索引来解析您的查询。

如果您需要更快的解决方案,则必须跟踪表中的nr行,而不必依赖于计算行本身。例如,您可以自己在另一个表中(作为精心设计的API的一部分或使用触发器等)或为此目的创建*索引视图。

但是,如果你只需要一个aproximation,并且快速得到答案是至关重要的,那么其他人已经通过使用字典(约翰,马丁)来证明这样做的方法

* 免责声明:我实际上并没有在SQL服务器中使用索引视图,我只是阅读文档并假设它们可以与Oracle中的物化视图做同样的事情。

答案 1 :(得分:1)

SELECT COUNT(*) FROM TableName

这对你有用吗?

答案 2 :(得分:1)

SELECT COUNT(*) FROM table_name

将有一个简单的计划。没有优化范围。

您可以使用WITH NOLOCK来减少锁定开销,但存在一些不准确的风险。

或使用

SELECT sum(rows)
FROM sys.partitions 
where object_id=object_id('foo') and index_id < 2

但是,这也不会给你一个事务上一致的答案。