Tsql 使用重复选择改进查询?

Tsql 使用重复选择改进查询?,tsql,sybase,Tsql,Sybase,我正在执行一个查询,从两个不同列上的完全相同的表中选择两次,并对另一个表中的同一组数据执行两次比较 我目前的方法是: 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 ) 有没有改进查询的方法 谢谢我已

我正在执行一个查询,从两个不同列上的完全相同的表中选择两次,并对另一个表中的同一组数据执行两次比较

我目前的方法是:

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 )
有没有改进查询的方法


谢谢

我已经在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
    )

可能吧。需要对您的数据进行测试

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是主键或唯一的,则声明它

吹毛求疵,但也许

DELETE MY_TABLE
FROM MY_TABLE m
JOIN #tmp_table 
  on #tmp_table.order_id in ( m.BUY_ORDER_ID, m.SELL_ORDER_ID )