【发布时间】:2010-08-17 05:40:41
【问题描述】:
我想执行一个在逻辑上等同于以下内容的 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 知识想出了几种方法:
- 按原样运行整个查询。
- 使用
nWHERE条件将查询分批成更小的查询 - 将
pond1-pond2对保存到新表中,并在WHERE子句中进行子查询以识别 - 将标识要删除的行的python逻辑转换为存储过程。请注意,我不熟悉编程存储过程,因此这可能涉及陡峭的学习曲线。
如果相关,我正在使用 postgres。
【问题讨论】:
标签: python sql optimization postgresql