他の小さなテーブルへのいくつかのキーを含む大きなテーブル(約1,000万レコード)があります。キーは小さいテーブルのそれぞれで一意ですが、大きいテーブルでは一意ではありません。一致するキーに基づいて、小さいテーブルの1つから大きいテーブルに列を追加したいのですが、それを行うための「正しい」方法がわかりません。私にはうまくいく解決策がありますが、それはかなりの時間がかかり(それは避けられないかもしれないと思います)、一般的にそれがそれを行うための最適な方法であるとは感じません。これが私が持っているものです:
CREATE TABLE new_big_table LIKE big_table;
ALTER TABLE new_big_table ADD(new_column TINYINT NOT NULL);
INSERT INTO new_big_table SELECT big_table.*, smaller_table.my_column
FROM big_table JOIN smaller_table ON big_table.key1 = smaller_table.key1
AND big_table.key2 = smaller_table.key2;
これで仕事は終わりますが、私がすべて間違っているように感じます。少なくとも、これを行うためにテーブルの複製を作成する必要はないようです。これを行うためのより直接的な(そしてより効率的な)方法はありますか?
これは自宅での個人的な趣味のプロジェクトのためのものであることに言及する価値があるかもしれません。そのため、私はマシンのすべてのリソースを自由に占有できます(私だけがそれを使用しているため)。そのため、このようなことを行うための簡単なパフォーマンス調整のヒントがあれば、私はそれらに感謝します(Amazon EC2インスタンスでは、個人のデスクトップよりもはるかに高速でメモリが多いはずなので、これを実験しています) 。