Привет, я довольно новичок в MS SQL, поэтому простите меня, если я прошу что-то, что очень очевидно для других более опытных людей. Я могу написать запрос для получения данных несколькими способами для получения одних и тех же данных. Теперь у меня есть два SQL запросы X и Y, которые выглядят как следующийВыбор наилучшего SQL-запроса
(Запрос 1)
select column1, column2, column3
from
Table1 a
inner join
Table2 b on a.column1=b.column1
where Condition1 and condition2
EXCEPT
(select column1, column2, column3
from
Table1 a
inner join
Table2 b on a.column1=b.column1
where Condition3
)
(Запрос 2)
select column1, column2, column3
from
Table1 a
inner join
Table2 b on a.column1=b.column1
where Condition1 and condition2
And column1 Not in
(select column1
from
Table1 a
inner join
Table2 b on a.column1=b.column1
where Condition3
)
Они оба принимает одинаковое время и ориентировочную стоимость поддерева также имеет минимальная разница. Я не уверен, какой из них лучший вопрос и почему.
Я бы ожидал, что запрос 2 будет немного лучше, поскольку он должен сравнивать меньше данных, чем запрос 1. Если ни один из столбцов не является основным ключом, тогда он будет достаточно умным, чтобы использовать только тот. – Magnus
В каких столбцах (окнах) действуют условия? И какую таблицу вы выбираете? – jpw
Также имейте в виду, что 'EXCEPT' включает неявный' DISTINCT'. Это означает, что дубликаты строк из левой таблицы будут удалены. Это не относится к запросу 2. – Magnus