我正在执行一个查询,该查询从2个不同列上的完全相同的表中选择两次,并从另一个表中对同一组数据进行两次比较。
我目前的方法:
DELETE FROM MY_TABLE
WHERE MY_TABLE.BUY_ORDER_ID
IN ( SELECT #tmp_table.order_id FROM #tmp_table )
OR MY_TABLE.SELL_ORDER_ID
IN ( SELECT #tmp_table.order_id FROM #tmp_table )
有没有办法改进查询?
由于
答案 0 :(得分:1)
我在SQL Server上试过这个,看起来更快。我想你可以在sybase上做类似的事情吗?
DELETE FROM MY_TABLE
WHERE EXISTS
(
SELECT * FROM #tmp_table
WHERE
#tmp_table.order_id = MY_TABLE.BUY_ORDER_ID
OR
#tmp_table.order_id = MY_TABLE.SELL_ORDER_ID
)
答案 1 :(得分:1)
可能。需要测试您的数据。
DELETE MY_TABLE
FROM MY_TABLE m
JOIN #tmp_table
on #tmp_table.order_id = m.BUY_ORDER_ID
or #tmp_table.order_id = m.SELL_ORDER_ID
如果#tmp_table.order_id是PK或唯一,则声明它。
分裂头发但可能
DELETE MY_TABLE
FROM MY_TABLE m
JOIN #tmp_table
on #tmp_table.order_id in ( m.BUY_ORDER_ID, m.SELL_ORDER_ID )