Допустим, у меня есть следующий запрос:
SELECT Id, Name, ForeignKeyId,
(SELECT TOP (1) FtName FROM ForeignTable WHERE FtId = ForeignKeyId)
FROM Table
Будет ли этот запрос выполняться быстрее, если он написан с помощью JOIN:
SELECT Id, Name, ForeignKeyId, FtName
FROM Table t
LEFT OUTER JOIN ForeignTable ft
ON ft.FtId = t.ForeignTableIf
Просто любопытно ... также, если JOIN быстрее, будет ли он быстрее во всех случаях (таблицы с большим количеством столбцы, большое количество строк)?
РЕДАКТИРОВАТЬ: Запросы, которые я написал, предназначены только для иллюстрации концепции TOP (1) и JOIN. Да, я знаю о плане выполнения запроса в SQL Server, но я не ищу оптимизацию одного запроса - я пытаюсь понять, есть ли определенная теория за SELECT TOP (1) vs JOIN и предпочтительнее ли определенный подход из-за скорости (не из-за личных предпочтений или удобочитаемости.)
РЕДАКТИРОВАТЬ2: Я хотел бы поблагодарить Аарона за его подробный ответ и призвать людей проверить бесплатный инструмент его компании SQL Sentry Plan Explorer , о котором он упомянул в своем ответе.