-1

2つのテーブルtable1とtable2があり、1つの列で内部結合を使用してそれらを結合しています。子テーブルには5000万を超えるレコードが含まれる可能性があります。spring jdbc update()を使用して1700万レコードを削除するのに30分かかりました。削除時間を短縮するための最適化された方法はありますか?

4

1 に答える 1

1

対応可能なバッチサイズでbatchUpdateを使用します。5000。

編集:問題はおそらく Spring jdbc ではなく、クエリにあります。

これはうまくいきますか?

DELETE 
    res
FROM
    RESULT res
INNER JOIN
    POSITION pos
    ON res.POSITION_ID = pos.POSITION_ID
WHERE
    pos.AS_OF_DATE = '2012-11-29 11:11:11'

これにより、RESULT テーブルからエントリが削除されます。簡略化された SQL フィドルのデモ: http://www.sqlfiddle.com/#!3/4a71e/15

于 2012-11-30T11:56:12.483 に答える