テーブル内の行数をチェックするには、ケース 2 を使用する方がケース 1 よりも高速であることを NET で読みました。そのため、sys.sysindexes の count(1) と rowcnt の両方のパフォーマンス テストを行ったところ、2 番目の方がはるかに優れていることがわかりました。
ストアド プロシージャまたはアドホック クエリでテーブル内の行数をカウントする必要がある場合はいつでも、運用コードで 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%