主キーが欠落している問題を修正する必要があります。それを行うための最良の方法についていくつかのアイデアを入手したいと思います。
いくつかの本番データベースにプログラムがあり、1時間ごとに新しいデータを合計テーブルに挿入します。5つの列がキーであり、他の列は異なる合計である値です。ON DUPLICATE KEY UPDATEを使用して、挿入ごとに合計を追加します。insertステートメントは次のようになります。
INSERT INTO sums (key1,key2,key3,key4,key5,sum1,sum2) VALUES (..., 13, 42, 3)
ON DUPLICATE KEY UPDATE sum1=VALUES(sum1)+sum1,sum2=VALUES(sum2)+sum2
問題は、テーブルが作成されたときに主キーが設定されていなかったことです(私のせいではありません:)。次に、同じキーを持つ行を集約してから、主キーを追加する必要があります。主キーが欠落しているため、いくつかのシステムでテーブルが約700 000 000行に増えたため、これを行うための効率的な方法が必要です。
1時間ごとに新しい行の追加を延期することなく、それを実行したいと思います。システムが動作する方法で、インサートを保存して後で実行するには、多くの作業が必要になるためです。
私が行うすべての操作は、45分以上テーブルをロックすることはできません。最初にいくつかの行をマージすることに成功した場合、実際の主キーの作成にかかる時間がそれよりも短くなることを願っています。たぶん、最初にいくつかのキー列のインデックスを作成する方が速いので、行の集計操作に使用するインデックスがありますか?
行を集約するための最良の方法もわかりません。良い提案をいただければ幸いです。