我在 NET 上读到,使用案例 2 比案例 1 更快地检查表中的行数。所以我对 sys.sysindexes 中的 count(1) 和 rowcnt 进行了性能测试,我发现第二个要好得多。
我有一个问题,当我需要在存储过程或临时查询中计算表中的行数时,在生产代码中使用 CASE 2 是否很好,案例 2 是否有可能失败?
编辑:在这种情况下,表中的行数接近 20000
DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS
--CASE 1
SELECT count(1) from Sales.Customer c -- 95%
--CASE 2
SELECT rowcnt
from sys.sysindexes s
WHERE id=object_id('Sales.Customer') AND s.indid < 2 -- 5%