4

テーブル内の行数をチェックするには、ケース 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%

ここに画像の説明を入力

4

2 に答える 2