我的
DELETE FROM FOO
WHERE [FOO_KEY] NOT IN
(
SELECT [FOO_KEY] FROM BAR
)
查詢運行速度非常慢。我知道 BAR 是一個很大的表,所以我很想寫
DELETE FROM FOO
WHERE [FOO_KEY] NOT IN
(
SELECT DISTINCT [FOO_KEY] FROM BAR
)
但我記得有人告訴我:
- 當s 不是問題時(并且它們不在這里), and
NULL之間幾乎沒有任何區別。INEXISTS - 使用時
EXISTS,您不需要使用SELECT DISTINCT,也沒有性能理由這樣做。
這讓我有充分的理由相信,絕對保證在此處添加DISTINCT不會產生影響。那是對的嗎?
uj5u.com熱心網友回復:
從功能的角度來看,帶或不帶的查詢DISTINCT是相同的(它們將洗掉同一組行)。
從性能的角度來看,我確信 SQL Server 將始終為兩個查詢生成相同的執行計劃(但我無法證明這一點)。
對于其他資料庫引擎,這可能會有所不同。看:
- https://mariadb.com/kb/en/optimizing-group-by/
- https://www.quora.com/Should-I-use-DISTINCT-in-a-subquery-when-using-IN
- https://docs.oracle.com/javadb/10.8.3.0/tuning/ctuntransform867165.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/481351.html
上一篇:使用值對查找行并找到完全匹配的組
