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

Откуда:
Сообщений: 3
Вариант1:

T.Name1,
T.Name2
Inner join T2 as T2
On (@B = 1)
And T.Name1 = T2.Name1

Вариант2:

T.Name1,
T.Name2
Inner join T2 as T2
And T.Name1 = T2.Name1
Where @B = 1

Скажите, пожалуйста, SQL поймет, что если параметр @B будет равен 0, то нет смысла перебирать таблицу по условию соединения варианта1 или по условию выборки Варианта2? Или таблицы все равно будут перебираться запросами?
17 фев 14, 20:00    [15579375]     Ответить | Цитировать Сообщить модератору
 Re: работа Запроса когда условие равно Ложь, подскажите пожалуйста  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Поймёт.
Но увидеть это легко, просто посмотрите план запроса.
(иконка на панели или Ctrl+M - Include Actual Execute Plan)
17 фев 14, 20:06    [15579389]     Ответить | Цитировать Сообщить модератору
 Re: работа Запроса когда условие равно Ложь, подскажите пожалуйста  [new]
vovan2012
Member

Откуда:
Сообщений: 3
Mnior, спасибо
17 фев 14, 20:09    [15579401]     Ответить | Цитировать Сообщить модератору
 Re: работа Запроса когда условие равно Ложь, подскажите пожалуйста  [new]
vovan2012
Member

Откуда:
Сообщений: 3
Mnior, к сожалению у меня нет доступа к плану запроса.
Хотел бы уточнить поконкретнее.
Понимаю, что план запроса с соединяемыми таблицами строиться будет, т.к. есть обращение к полям другой таблицы. Но будет ли запрос перебирать строки соединяемой таблицы?
17 фев 14, 20:28    [15579452]     Ответить | Цитировать Сообщить модератору
 Re: работа Запроса когда условие равно Ложь, подскажите пожалуйста  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
vovan2012
у меня нет доступа к плану запроса
Сравните результаты io
use tempdb;
go

declare @f int = 0;

set statistics io on;

select top (10)
 *
from
 sys.objects
where
 @f = 1;

select top (10)
 *
from
 sys.objects
where
 @f = 1
option (recompile);

select @f = 1;

select top (10)
 *
from
 sys.objects
where
 @f = 1;

set statistics io off;
17 фев 14, 21:56    [15579685]     Ответить | Цитировать Сообщить модератору
 Re: работа Запроса когда условие равно Ложь, подскажите пожалуйста  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
vovan2012
Mnior, к сожалению у меня нет доступа к плану запроса.
Забыли выдать, стандартная ситуация.

Не стоит начинать понимать ситуацию с закрытыми глазами.
Или попросите право:
GRANT SHOWPLAN TO <User>;
А лучше на группу проггеров.

Или делайте на своём локальном серевере.
У вас Visual Studio стоит локакльно? - значит скорее всего стоит .\Express
18 фев 14, 00:11    [15580019]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить