以下哪種查詢更高效,爲什麼?根據執行計劃,它們都有相同的總成本,但我不確定這是否是一個很好的總體性能指標。我的哪個查詢更高效?
1>
SELECT MIN(ROWID), MAX(ROWID)
FROM tab_a
WHERE status = 0
AND EXISTS (
SELECT 'X'
FROM tab_b
WHERE status = 0
AND number = assembly_number
AND ROWID >= :min_rowid
AND ROWID <= :max_rowid
)
;
2>
SELECT MIN(ROWID), MAX(ROWID)
FROM tab_a
WHERE status = 0
AND assembly_number IN (
SELECT number
FROM tab_b
WHERE status = 0
AND ROWID >= :min_rowid
AND ROWID <= :max_rowid
)
;
這將大大取決於表上的索引。 –
@astander:真的嗎?有人會認爲查詢規劃者將它們視爲等價的(這似乎是這種情況,因爲它顯示了相同的成本)。 – Thilo
你可以顯示兩者的執行計劃嗎? (看起來他們可能是相同的)。 – Thilo