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 )