Вопрос о производительности Sql COUNT
-
20-09-2019 - |
Вопрос
Структура примерной таблицы:
Id, Integer (PK)
Name, Varchar(100)
Description, Text
Мне нужно знать, существует ли разница в производительности между:
SELECT COUNT(*) FROM Example;
и
SELECT COUNT(Id) FROM Example;
Или различий не существует?
Решение
Различия существуют как в производительности, так и в фактическом наборе результатов
Другие советы
Ознакомьтесь с планом объяснения:получен ли результат из таблицы или из метаданных (например,ИНФОРМАЦИЯ_СХЕМА)?:Различия, скорее всего, будут очень минимальными.
Я бы поверил, что разница есть;в зависимости от размера вашей таблицы это может быть незначительно, а может быть и значительно.
Это, вероятно, самый медленный:ВЫБЕРИТЕ COUNT(*) ИЗ Примера
Это находится посередине:ВЫБЕРИТЕ КОЛИЧЕСТВО (Id) ИЗ Примера
Это было бы быстрее всего:ВЫБЕРИТЕ COUNT(1) ИЗ Примера
Стоит почитать, но, к сожалению, на русском.
COUNT(*), может ли это быть быстрее?
Короткая история заключается в том, что COUNT(*)
не так эффективен, как прямой доступ к dm_db_partition_stats
.