Mysql изменить тип плана запроса

Привет у меня есть такой запрос

      SELECT (SELECT CSN FROM apps as b WHERE 
         a.key1=b.key1 AND a.key2 = b.key2  AND b.seq=MAX(b.seq) LIMIT 0,1) AS CSN,
         a.key1
FROM apps  as a GROUP BY key1, key2 

Теперь, когда я использую EXPLAIN, я получаю, что типом является range, а extras - "Использование индекса для группировки". Этот план занимает 10 секунд, чтобы выполнить 350 000 строк таблицы. Однако иногда это занимает всего 4 секунды, и план выполнения имеет тип: index и extra: using where

Итак, вопрос в том, почему это происходит, когда план первый и второй, и могу ли я каким-то образом изменить план?

1 ответ

Хорошо, я понял это. Статистика InnoDB, вероятно, была отключена. Я позвонил в Анализ таблицы, чтобы обновить статистику, и теперь она вернулась к более низкому числу.

Другие вопросы по тегам