SELECT COUNT(*) AS cnt
FROM products
WHERE ExternalProductId IS NOT NULL
GROUP BY SourceId, ExternalProductId
HAVING cnt > 1
(ExternalProductId、SourceId、AnotherField) にインデックスがあります。Explain は、索引が使用されていることを示しています。これは、説明の「追加」列に出力されます。
Using where; Using index; Using temporary; Using filesort
クエリを実行すると、SHOW PROCESSLIST で次のように表示されます。
Copying to tmp table on disk
このクエリを微調整して、インデックスで機能するようにすることはできますか? 他のプロセスがこのテーブルで同時に作業しているために、取得した結果が多少不正確であっても構いません。分離レベルを変更して、クエリのパフォーマンスを向上させることはできますか?