2011-12-25 2 views
2

MySQLプラットフォームで次のSQLクエリを実行します。MySQLでSQLクエリーの実行が悪い

表Aは、単一の列(主キー)と25K行を持つ表です。 表Bには、複数の列と75Kの行があります。

次のクエリの実行には20分かかります。あなたが手伝ってくれれば嬉しいです。

INSERT INTO sometable 
SELECT A.PrimaryKeyColumn as keyword, 'SomeText', B.* 
FROM A, B 
WHERE B.PrimaryKeyColumn = CONCAT(A.PrimaryKeyColumn, B.NotUniqueButIndexedColumn); 
+0

私はConcat()関数がインデックスの利点を削除すると思います – Simon

答えて

5

は、問題がSELECTかであるかどうかを確認するためにINSERTなしSELECTを実行します。

SELECTの場合は、the MySQL documentation explaining how to optimize queries using EXPLAINに従ってください。

SELECTは正常に動作しますが、INSERTには永遠にかかる場合は、sometableに不要なインデックスがたくさん含まれていないことを確認してください。それ以外にも、INSERTで測定可能なパフォーマンス向上を得るには、MySQLチューニングやOSチューニング(例えば、メモリやディスクのパフォーマンス)を行う必要があるかもしれません。

0

私が正しければ、およそ1.875億レコードを挿入しようとしています(where句には一致しません)。

20分はあまりにも悪くはありません....

関連する問題