Для MySQL подтверждается бытующее мнение о том, что COUNT(*) рабо- тает медленнее всего, но неожиданно самым быстрым оказывается вариант с COUNT(поле_без_индекса). Однако стоит отметить, что на меньшем объёме дан- ных (до миллиона записей) ситуация оказывается совершенно иной — быстрее всего работает COUNT(*).
MS SQL Server показал ожидаемые результаты:
оказался самым быстрым, — самым мед- ленным. На меньших объёмах данных этот результат не меняется.
И теперь самое интересное — результаты Oracle: здесь снова подтверди- лись слухи о медленной работе COUNT(*), но все остальные запросы показали по- трясающий результат, очень высокую стабильность этого результата и полную не- зависимость от объёма анализируемых данных. (Обратитесь к документации по Or- acle, чтобы узнать, как этой СУБД удаётся так быстро выполнять некоторые виды COUNT).
Пусть данное исследование и не претендует на научный подход, но общая рекомендация состоит в том, чтобы использовать COUNT(1) как в среднем один из самых быстрых вариантов для разных СУБД и разных объёмов данных, т.к. осталь- ные варианты иногда оказываются быстрее, но иногда и медленнее.