2017-01-29 24 views
0

私は大きなテーブル(60k行以上)を持っていますが、このテーブルから別のテーブルに一意の行をコピーしようとしています。mysqlのINSERT INTO ... SELECT

INSERT INTO tbl2(field1, field2) 
SELECT DISTINCT field1, field2 
    FROM tbl1; 

を次のようにクエリがある。しかし、誰かが重複したデータをフィルタリングし、その後、SQLファイルを生成し、あなたのテーブルのmysqldumpを実行

+2

エスカレート?加速する?あなたはその声明の実行計画を分かち合うことができますか? – GurV

+0

実行計画は?この文は、移行ファイルの一部です。 – madhur

+0

2つのフィールドの 'GROUP BY'クエリとして実行することができます。この場合、フル・テーブル・スキャンが必要になり、索引が役立たないでしょう。 –

答えて

1

このプロセスを加速する方法を提案することができ、このクエリを実行するために年齢を取っていますシェルコマンドで

cat dump.sql | uniq > dump_filtered.sql 

生成されたファイルを確認します。次に、新しいテーブルを作成し、dump_filtered.sqlファイルをLOAD DATA INFILEでロードします。

0

はこれを試してみてください:

1. drop the destination table: DROP DESTINATION_TABLE; 
2. CREATE TABLE DESTINATION_TABLE AS (SELECT * FROM SOURCE_TABLE); 
関連する問題