Я считаю, что выборка (*) занимает значительно больше времени, чем выборка * для запросов с тем же предложением где.
В рассматриваемой таблице содержится около 2,2 миллиона записей (назовите это подробно). У него есть поле внешнего ключа, связывающее другую таблицу (maintable).
Этот запрос занимает около 10-15 секунд:
select count(*) from detailtable where maintableid = 999
Но это занимает секунду или меньше:
select * from detailtable where maintableid = 999
ОБНОВЛЕНИЕ - было предложено указать количество записей. Это 150
ОБНОВЛЕНИЕ 2 Вот информация, когда используется ключевое слово EXPLAIN.
Для SELECT COUNT (*) столбец EXTRA сообщает:
Using where; Using index
KEY и POSSIBLE KEYS имеют ограничение внешнего ключа в качестве значения.
Для запроса SELECT * все то же самое, но EXTRA просто говорит:
Using Where
ОБНОВЛЕНИЕ 3 Попытка ОПТИМИЗАЦИЯ ТАБЛИЦЫ, и это все равно не имеет значения.