【发布时间】:2012-09-10 20:59:21
【问题描述】:
统计大量数据的表可能会很慢,有时需要几分钟;它还可能在繁忙的服务器上产生死锁。我想显示真实值,NOLOCK 不是一个选项。
我使用的服务器是 SQL Server 2005 或 2008 Standard 或 Enterprise - 如果重要的话。 我可以想象 SQL Server 维护每个表的计数,如果没有 WHERE 子句,我可以很快得到这个数字,对吧?
例如:
SELECT COUNT(*) FROM myTable
应该立即返回正确的值。我是否需要依靠统计数据来更新?
【问题讨论】:
-
得到一个query execution plan,然后我们可以谈谈...(
SELECT COUNT直接查询表而不是使用统计,因为统计可能已经过时了) -
愚蠢的问题,但是你有索引吗?
-
@FreshPrinceOfSO 如果您指望
Id(bigint,主键,身份规范=true),它仍然很慢。 -
@FreshPrinceOfSO 会有什么不同吗?是的,我实际上有一个聚集索引。
-
如果经常使用count,那么我们可以将它存储在另一个表中。我也面临同样的问题,我已经使用 IF EXISTS 来解决这个问题。
标签: sql sql-server sql-server-2008 sql-server-2005 count