Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Подзапрос по условию  [new]
DNV
Member

Откуда: Ильичевск (Одесса)
Сообщений: 277
Вопрос: перед выполнением запросов в SP, корректируется ли созданный план с оглядкой на значение переменных?

к примеру есть такая процедура
ALTER PROC _getList
	@isFilter bit=0
as
SELECT 
	*,
	sub=CASE WHEN @isFilter=1 THEN
		(SELECT SUM(tbl4.Amount) FROM tbl2 
				JOIN tbl3 on tbl2.A=tbl3.B
				JOIN tbl4 on tbl3.B=tbl4.C
			WHERE tbl2.x=tbl1.y
		)
	end
FROM Tbl1


будет ли план при @isFilter=0 вхолостую выполнять подзапрос? (понятно что результат выполнения не будет возвращаться)

В данном случае конечно легко разнести на 2 запроса по условию IF
Но у меня есть очень длинный и сложный запрос с множеством условий по переменным. Да и плодить кучу похожих запросов не правильно, и трудоемко при внесении изменений.

или например так
 select a.*,b.x from a
		left join b on @isSecondTbl=1 and a.id=b.id

будет ли выполняться соединение таблиц a.id=b.id при @isSecondTbl=0
10 апр 13, 14:01    [14161839]     Ответить | Цитировать Сообщить модератору
 Re: Подзапрос по условию  [new]
Glory
Member

Откуда:
Сообщений: 104760
DNV
перед выполнением запросов в SP, корректируется ли созданный план с оглядкой на значение переменных?

Нет.
10 апр 13, 14:06    [14161869]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить