Привет, у меня есть следующая таблица T:
id 1 2 3 4
col a b a c
Я хочу сделать выборку, которая возвращает id, col, когда группа по (col), имеющая count (col)> 1
Один из способов сделать это -
SELECT id,col FROM T
WHERE col IN (SELECT col FROM T GROUP BY(col) HAVING COUNT(col)>1);
Интерн select (справа) возвращает 'a', а основной (слева) вернет 1, a и 3, a
Проблема в том, что оператор where находится на очень медленном уровне. В моем реальном случае результаты внутреннего выбора имеют много значений, около 70000, и это занимает несколько часов.
Сейчас гораздо быстрее сделать внутренний выбор и главный выбор, получив все идентификаторы и upcs, и выполнить пересечение локально. MySQL должен уметь эффективно обрабатывать такие запросы.
Могу ли я заменить место для соединения или что-то более быстрое?
Спасибо