SELECT t1 . * FROM table1 t1, table1 t2
WHERE t1.history_id < t2.history_id
AND (t1.license_id = t2.license_id
OR (t1.license_id IS NULL AND t2.license_id IS NULL))
AND t1.op_id = t2.op_id
AND (t1.service_date = t2.service_date
OR (t1.service_date IS NULL AND t2.service_date IS NULL))
AND t1.customer_id = t2.customer_id
AND t1.serial_id = t2.serial_id.
クエリの目的は、上記のクエリ条件に基づいて重複行を削除することです。クエリは、テーブル 'table1' をそれ自体に結合します。のグループ インデックスを使用してインデックスを作成しました
- license_id
- service_date
- 顧客ID
- history_id (主キー)
- op_id。
正しく実行されOR (t1.service_date IS NULL AND t2.service_date IS NULL)
ますが、クエリの実行が非常に遅くなります。テーブルには 2 つ以上のデータの欠落があります。
MySQLEXPLAIN
コマンドを使用しました。これが出力です
クエリの実行時間を改善するにはどうすればよいですか?