Который быстрее присоединиться

12

Который быстрее

SELECT * FROM X INNER JOIN Y ON x.Record_ID = y.ForignKey_NotIndexed_NotUnique

или

SELECT * FROM X INNER JOIN Y ON y.ForignKey_NotIndexed_NotUnique = x.Record_ID
ребро
источник

Ответы:

17

Не будет никакой разницы - механизм запросов в mssql (и в большинстве механизмов баз данных) создаст один и тот же план запросов для обоих. Вы можете убедиться в этом, просмотрев примерный и фактический план запросов в SQL Workbench.

Майкл Петротта
источник
10

Оптимизатор проигнорирует это, потому что это идентичное JOIN.

SQL является декларативным, а не процедурным, и запрос будет оцениваться как toto, а не строка за строкой.

ГБН
источник
4

Как насчет создания теста, который использует ваши собственные данные, чтобы ответить на ваш вопрос?

Если вы узнаете только одну вещь о программировании баз данных, то есть о том, что часто не бывает одного размера, подходящего для любого решения. Конечно, есть лучшие практики, но в целом это всегда индивидуально.

Причина, по которой я это говорю, заключается в том, что в случае запросов к базе данных реляционных подходов зачастую не существует единого подхода, подходящего для любого подхода. Поскольку есть планировщик, который решает, как поступить с вашими данными, тот же запрос может освещаться быстро или очень медленно, в зависимости от того, что планировщик решит сделать с информацией, которую он имеет в любой момент времени. Например, иногда индекс - ваш лучший друг месяц, а месяц спустя - ваш злейший враг, в зависимости от того, ищете ли вы данные или вставляете данные, а также то, как другие используют систему во время выполнения запроса. Поэтому я всегда рекомендую создавать тест, который доказывает для вашего варианта использования, как этот запрос будет выполняться. И даже тогда ваши результаты могут со временем меняться, и вы вернетесь к оптимизации по мере изменения данных и использования.

Я думаю, что ответы, которые вы получите от stackoverflow, будут ответами из учебников, а не реальным ответом, который может предоставить только ваша среда. И, в конце концов, важен ваш реальный результат.

Теперь ваш простой запрос, который вы показываете здесь, должен иметь одинаковую производительность. Но даже тогда я говорю, проверь и докажи, если ты задаешь вопрос. Я бы доверял результатам, прежде чем доверять кому-либо, в том числе и моему.

Kuberchaun
источник