0

2つの異なる列でまったく同じテーブルから2回選択するクエリを実行し、別のテーブルから同じデータセットとの比較を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 )

クエリを改善する方法はありますか?

ありがとう

4

2 に答える 2

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
    )
于 2012-09-18T14:45:50.627 に答える
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 )
于 2012-09-18T14:47:52.630 に答える