У нас есть запрос ниже. Использование соединения LEFT OUTER занимает 9 секунд. Изменение LEFT OUTER на LEFT INNER уменьшает время выполнения до 2 секунд, и возвращается то число. Поскольку обрабатывается одинаковое количество строк из таблицы dbo.Accepts, независимо от типа соединения, почему внешний элемент займет 3 раза?LEFT INNER JOIN против LEFT OUTER JOIN - Почему OUTER занимает больше времени?
SELECT CONVERT(varchar, a.ReadTime, 101) as ReadDate,
a.SubID,
a.PlantID,
a.Unit as UnitID,
a.SubAssembly,
m.Lot
FROM dbo.Accepts a WITH (NOLOCK)
LEFT OUTER Join dbo.Marker m WITH (NOLOCK) ON m.SubID = a.SubID
WHERE a.LastModifiedTime BETWEEN @LastModifiedTimeStart AND @LastModifiedTimeEnd
AND a.SubAssembly = '400'
Я не знал, что существует такая вещь, как «ВЛЕВО-ВЗАИМОДЕЙСТВИЕ». Что оно делает? –
Я подозреваю, что 'LEFT' из' LEFT INNER' получает изъяты, и это просто «INNER JOIN». –
Использование SQL Server 2005 я не могу запустить запрос, используя 'LEFT INNER JOIN' - я получаю« Неправильный синтаксис рядом с ключевым словом «INNER». Какую версию SQL Server вы используете? Если 2005+, вы работаете на пониженном уровне совместимости? –