Sql-Server
優化count小於查詢
我想優化在 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
的 可以在收到第二個行後立即停止請求行,而不是請求更多行並導致讀取其他不相關的行。但是,不能絕對保證它會更有效。偶爾會出現一些邊緣情況,其中添加 a
TOP
會導致整體計劃比僅帶回整個結果集的查詢更糟糕。