Я хочу отфильтровать коды по крайней мере с 1 штрих-кодом по крайней мере с X вхождениями в таблице магазинов.
структура таблиц
коды таблиц (теперь имеет 1000 записей):
code (PK)
ABC
XYZ
таблица штрих-кодов (теперь имеет 6.000 записей):
barcode (PK) code
ABC 123
ABC 456
XYZ 789
хранилище таблиц (сейчас 67.000 записей):
id (PK) barcode
1 123
2 123
3 123
4 789
как я могу ускорить этот запрос?
SELECT c.code,
IFNULL(
(SELECT COUNT(*) count FROM store s INNER JOIN barcode b ON s.barcode=b.barcode WHERE b.code=c.code GROUP BY a.barcode ORDER BY count DESC LIMIT 1
),0) max
FROM codes c
GROUP BY c.code";
HAVING max>=X
при x = 2 ожидаемый результат:
code max
ABC 3
, потому что только код ABC имеет как минимум 1 штрих-код (123), как минимум, 2 вхождения в таблице хранения.