私は大きなテーブル(60k行以上)を持っていますが、このテーブルから別のテーブルに一意の行をコピーしようとしています。mysqlのINSERT INTO ... SELECT
INSERT INTO tbl2(field1, field2)
SELECT DISTINCT field1, field2
FROM tbl1;
を次のようにクエリがある。しかし、誰かが重複したデータをフィルタリングし、その後、SQLファイルを生成し、あなたのテーブルのmysqldumpを実行
私は大きなテーブル(60k行以上)を持っていますが、このテーブルから別のテーブルに一意の行をコピーしようとしています。mysqlのINSERT INTO ... SELECT
INSERT INTO tbl2(field1, field2)
SELECT DISTINCT field1, field2
FROM tbl1;
を次のようにクエリがある。しかし、誰かが重複したデータをフィルタリングし、その後、SQLファイルを生成し、あなたのテーブルのmysqldumpを実行
このプロセスを加速する方法を提案することができ、このクエリを実行するために年齢を取っていますシェルコマンドで
cat dump.sql | uniq > dump_filtered.sql
生成されたファイルを確認します。次に、新しいテーブルを作成し、dump_filtered.sqlファイルをLOAD DATA INFILEでロードします。
はこれを試してみてください:
1. drop the destination table: DROP DESTINATION_TABLE;
2. CREATE TABLE DESTINATION_TABLE AS (SELECT * FROM SOURCE_TABLE);
エスカレート?加速する?あなたはその声明の実行計画を分かち合うことができますか? – GurV
実行計画は?この文は、移行ファイルの一部です。 – madhur
2つのフィールドの 'GROUP BY'クエリとして実行することができます。この場合、フル・テーブル・スキャンが必要になり、索引が役立たないでしょう。 –