Производительность запроса некластеризованного индекса во время внутреннего соединения - PullRequest
0 голосов
/ 05 мая 2020

У нас есть две таблицы во внутреннем запросе соединения. Какой из приведенных ниже вариантов рекомендуется для обеспечения высокой производительности, когда в обеих таблицах миллионы записей.

ПРИМЕЧАНИЕ. У нас есть некластеризованный индекс в столбце внешнего ключа. У нас недостаточно данных для проверки производительности в среде разработки. Также в это соединение может входить больше таблиц с INNER или LEFT соединениями.

Таблицы:

Subscriber(SID(PK), Name)
Account(AID(PK),SID(FK), AName)

Запрос:

SELECT *
FROM Account A
INNER JOIN Subscriber S ON S.SubscriberID=  A.SubscriberID
WHERE 
S.SubscriberID = @subID -- option 1
A.SubscriberID = @subID -- option 2

1 Ответ

3 голосов
/ 05 мая 2020

Не должно иметь никакого значения, в какой столбец вы помещаете предикат.

SQL Сервер может видеть условие S.SubscriberID= A.SubscriberID и в любом случае создать «подразумеваемый предикат» для другого столбца.

Это действительно становится перекрестным соединением (между отфильтрованными строками с обеих сторон), тогда как обсуждается здесь

...