Я хотел запустить следующий запрос:
-- Main Query
SELECT COUNT(*) FROM table_name WHERE device_id IN
(SELECT DISTINCT device_id FROM table_name WHERE NAME = 'SOME_PARA')
Этот следующий запрос (дополнительный запрос из основного запроса):
SELECT DISTINCT device_id FROM table_name WHERE NAME = 'SOME_PARA'
выполняется за 7 секунд, давая 2691 строку из таблицы из строк 2.1M.
Я выпустил Основной запрос выше, и он все еще выполняется после 5 минут + ожидания.
Наконец, я выполнил дополнительный запрос отдельно, взял 2691 записей из результата, выполнил следующий запрос:
-- Main Query (improvised)
SELECT COUNT(*) FROM table_name WHERE device_id IN
("device_id_1", "device_id_2", ....., "device_id_2691")
Удивительно, но это дало мне ответ в течение 40 секунд.
Что дает? Почему MySQL не использует ту же технику, что и я, и быстро отвечаю? Я что-то делаю неправильно?