На хабре вы можете узнать, что для подсчета кол-ва строк (COUNT) MySQL обходит таблицу по индексам. Для меня это было шоком. Как? Зачем?? Т.е.
SELECT COUNT(*) FROM table WHERE key = 'some';
обойдет все записи по индексу и подсчитает их. А вот если выбрать чего из ключа:
SELECT key_part2 FROM table WHERE key_part1 = 'some' LIMIT 1;
то ни единой строчки не будет тронуто.
Вопросы:
- Зачем дергать данные в COUNT? Зачем это нужно? Неужели нельзя подсчитать количество из индекса?
- Есть ли какие способы это обойти? Окромя предложенного explain?
- Откуда explain берет данные? Насколько им можно доверять?