條件我想執行一個SQL查詢在邏輯上等同於以下內容:有效途徑凡在SQL語句
DELETE FROM pond_pairs
WHERE
((pond1 = 12) AND (pond2 = 233)) OR
((pond1 = 12) AND (pond2 = 234)) OR
((pond1 = 12) AND (pond2 = 8)) OR
((pond1 = 13) AND (pond2 = 6547)) OR
((pond1 = 13879) AND (pond2 = 6))
我將有幾十萬pond1
- pond2
對。我有(pond1, pond2)
的索引。
我有限的知識SQL想出了幾種方法:
- 運行整個查詢的是。
- 批量查詢成更小的查詢與
n
WHERE
條件 - 保存
pond1
-pond2
對到一個新表,並做一個子查詢WHERE
子句中識別 - 轉換標識要刪除的行蟒蛇邏輯進入存儲過程。請注意,我不熟悉編程的存儲過程,因此這可能會涉及到一個陡峭的學習曲線。
我使用Postgres的,如果這是相關的。
雖然(除非對已經存在於數據庫中),但使用對填充TEMP TABLE與原始DELETE問題是等效的問題。 – Thilo 2010-08-17 06:10:19
不,您可以使用COPY填充臨時表。這比其他選項更快地將數據存入臨時表。我只是舉了一個非常簡單的例子,但這個想法是一樣的。 – 2010-08-17 06:15:48
您能否演示如何使用COPY填充臨時表? – Thilo 2010-08-17 06:37:45