Sql-Server

優化count小於查詢

  • January 10, 2018

我想優化在 SQL Server 中對錶的查詢,以了解它的記錄數是否少於一定數量。我不需要知道完整的計數,只需要知道它是否小於,比如說,2。

做這樣的事情會有效嗎?…

if (
   select count(*)
     from (select top (2) *
             from sys.databases) t
  ) > 1
begin
 select 1
end
else
begin
 select 0
end

是的。

問題中的查詢原則上能夠比僅僅做的明顯替代更有效地做到這一點select count(*) from sys.databases

EXISTS出於與通常更可取的相同原因COUNT。它可以短路。

聚合運算符下面TOP的 可以在收到第二個行後立即停止請求行,而不是請求更多行並導致讀取其他不相關的行。

在此處輸入圖像描述

但是,不能絕對保證它會更有效。偶爾會出現一些邊緣情況,其中添加 aTOP會導致整體計劃比僅帶回整個結果集的查詢更糟糕。

引用自:https://dba.stackexchange.com/questions/48640