目前,我有以下查詢需要較長的時間來執行SQL查詢優化:比較相鄰行
SELECT * FROM Table t1
WHERE EXISTS
(
SELECT * FROM Table t2
WHERE
(
t1.Key = t2.Key - 1
AND t1.Foo = 1
AND t2.Bar = 0
)
)
的Key
是主鍵字段。我只比較相鄰的行,所以直覺上看,最快的實現方式是比較所有相鄰的行,N-1表示。我的查詢的工作方式,我認爲它可能會比較每行與Table
中的每一行,即採取N * N比較。
有沒有更好的方法來編寫查詢?
'有沒有更好的方法來編寫查詢?'不,它是完美的,典型的DBMS不會執行N * N行 - 比較,而是使用某種合併加入。在這種情況下,問題比選擇中的解決方案要好d答案,IMO。 – wildplasser
BTW:請使用理智_metasyntactic_名稱;無論是富/酒吧或蘋果/橙色或'my_table'或其他。但**不要**命名你的表'表'和你的鑰匙'鑰匙'。你不會將你的孩子命名爲「孩子」,是嗎? – wildplasser
我的DBMS似乎沒有合併連接。布拉德的回答比這個速度快4倍。 – rwolst