SELECT COUNT(*) AS cnt
FROM products
WHERE ExternalProductId IS NOT NULL
GROUP BY SourceId, ExternalProductId
HAVING cnt > 1
Есть индекс для (ExternalProductId, SourceId, AnotherField). Объяснение показывает, что индекс используется. Это напечатано в столбце «Extra» объяснения:
Using where; Using index; Using temporary; Using filesort
Когда я запускаю запрос, я вижу через SHOW PROCESSLIST:
Copying to tmp table on disk
Можно ли настроить этот запрос для работы с индексом? Я также не против, если полученные результаты немного неточны из-за других процессов, одновременно работающих с этой таблицей - могу ли я изменить уровень изоляции, чтобы повысить производительность запроса?