Обычно это происходит потому, что у вас есть индекс, включающий столбец x
.
. В общем случае count(*)
требует сканирования всех строк или сканирования наименьшего индекса (в зависимости от базы данных).
Для сравнения, с вашим предложением where
есть два основных подхода:
- Сканирование всех строк и сравнение.
- Поиск значенийв индексе, который удовлетворяет условию.
Второй подход, как правило, намного быстрее первого.
Другие факторы могут вступать в игру.Например, другой процесс может обновлять или вставлять строки, что накладывает блокировки на таблицу или ее части.Это может замедлить другие запросы.Однако, по всей вероятности, причиной является наличие индекса.