行数を見つけるためにタブレアからカウント(1)よりも速いものはありますか?

StackOverflow https://stackoverflow.com/questions/3759817

  •  04-10-2019
  •  | 
  •  

質問

私たちがより速く獲得できるものはありますか?カウント(1)を使用する代わりに、テーブル内の行の行。さらに、2つのケースがあります。

a)いいえを取得したいとき。テーブルの行の。

b)少なくとも1つの行があるかどうかを知りたいとき。

前もって感謝します。

役に立ちましたか?

解決

a)システムテーブルからテーブルの行数を取得できます。 ブログ投稿はこちら.

b)私は常に存在する:

IF EXISTS(SELECT * FROM YourTable)

他のヒント

b)少なくとも1つの列があるかどうかをTOTにしたいとき。

SELECT TOP 1 myField FROM myTable [WHERE .....]

テーブル内のすべての行のカウントをスキャンせずに知るために使用できます

select SUM(row_count) AS row_count
from sys.dm_db_partition_stats
where object_id = object_id('dbo.tblName')
    and index_id < 2

そのアプローチに注意が払われているかどうかはわかりません。 (おそらく、コミットされていないレコードのカウントを含めるか、現在の取引内で行われた変更を含めないかもしれません)

b)linq-to-sql生成

EXISTS (SELECT NULL FROM Table....)

a)いいえ

b)使用できます exists 関数は、結果があるかどうかをチェックし、実際には結果を取得しません。

sysobjectsとsysindexesを使用して、このアプローチがあります。

すべてのテーブルの行を一度にカウントします

過去にはうまくいきました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top