Я запускаю такой запрос в MSSQL2008:
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) и COUNT (*) в MySQL отвечает на этот вопрос для MySQL, но я не мог найти ответы на MS-SQL специально, и я не может найти ничего, что учитывает фактор join
.
ПРИМЕЧАНИЕ.. Я пытался найти эту информацию как в Google, так и в SO, но было сложно понять, как записать мой поиск.