Я бегу запрос, как это в MSSQL2008:"SELECT COUNT (column)" быстрее/медленнее, чем "SELECT COUNT (*)"?
select count(*)
from t1
inner join t2 on t1.id = t2.t1_id
inner join t3 on t1.id = t3.t1_id
Предположим t1.id
имеет NOT NULL
ограничение. Поскольку они являются внутренними соединениями, а t1.id
никогда не может быть нулевым, использование count(t1.id)
вместо count(*)
должно привести к тому же конечному результату. Мой вопрос: будет ли производительность такой же?
Мне также интересно, могут ли объединения повлиять на это. Я понимаю, что добавление или удаление соединения повлияет как на производительность, так и на длину набора результатов. Предположим, что без изменения шаблона объединения вы устанавливаете count
для таргетинга только на одну таблицу. Разве это имеет значение? Другими словами, существует ли разница между этими двумя запросами:
select count(*) from t1 inner join t2 on t1.id = t2.t1_id
select count(t1.*) from t1 inner join t2 on t1.id = t2.t1_id
COUNT(id) vs. COUNT(*) in MySQL отвечает на этот вопрос для MySQL, но я не мог найти ответы на MS-SQL конкретно, и я не могу найти вообще ничего, что учитывает фактор join
.
ПРИМЕЧАНИЕ: Я попытался найти эту информацию как в Google, так и в SO, но было сложно разобраться, как сложить мой поиск.
Возможные Дубликаты: http://stackoverflow.com/questions/1221559/count-vs-count1 http://stackoverflow.com/questions/2710621/count -vs-count1-vs-countpk-which-is-better –