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

Откуда:
Сообщений: 1197
Верно ли, что лишние скобки увеличивают время работы запроса
например:
Where DATEDIFF(day, First_Date, @First_Date) >= 0 and 
			  DATEDIFF(day, Last_Date, @Last_Date) <= 0  and 
			  (Status IN (1, 2)) AND (HotelID = @HotelID)

будет работать быстрей, чем
Where (DATEDIFF(day, First_Date, @First_Date) >= 0) and 
			  (DATEDIFF(day, Last_Date, @Last_Date) <= 0)  and 
			  (Status IN (1, 2)) AND (HotelID = @HotelID)
9 сен 09, 11:08    [7635751]     Ответить | Цитировать Сообщить модератору
 Re: Влияние () на производительность  [new]
Glory
Member

Откуда:
Сообщений: 104760
relief
Верно ли, что лишние скобки увеличивают время работы запроса

Откуда "дровишки" ?
9 сен 09, 11:10    [7635762]     Ответить | Цитировать Сообщить модератору
 Re: Влияние () на производительность  [new]
relief
Member

Откуда:
Сообщений: 1197
Glory
relief
Верно ли, что лишние скобки увеличивают время работы запроса

Откуда "дровишки" ?


лишние операции выполняются ==> время
9 сен 09, 11:12    [7635782]     Ответить | Цитировать Сообщить модератору
 Re: Влияние () на производительность  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
Glory
relief
Верно ли, что лишние скобки увеличивают время работы запроса

Откуда "дровишки" ?
Я бы даже сказал: откуда трава такая? :)

Если разница и будет, то заметить ее будет трудно.
9 сен 09, 11:13    [7635784]     Ответить | Цитировать Сообщить модератору
 Re: Влияние () на производительность  [new]
Glory
Member

Откуда:
Сообщений: 104760
relief
Glory
relief
Верно ли, что лишние скобки увеличивают время работы запроса

Откуда "дровишки" ?


лишние операции выполняются ==> время

И какие операции сервер выполняет со скобками ? И какие из них будут лишними ?
9 сен 09, 11:14    [7635798]     Ответить | Цитировать Сообщить модератору
 Re: Влияние () на производительность  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Рекомендую автору вместо таких мифов
лучше задуматься о том, как заменить DATEDIFFы на BETWEEN какой-нибудь

Извините за offtop, не смог мимо пройти
9 сен 09, 11:17    [7635828]     Ответить | Цитировать Сообщить модератору
 Re: Влияние () на производительность  [new]
relief
Member

Откуда:
Сообщений: 1197
Glory
relief
Glory
relief
Верно ли, что лишние скобки увеличивают время работы запроса

Откуда "дровишки" ?


лишние операции выполняются ==> время

И какие операции сервер выполняет со скобками ? И какие из них будут лишними ?


анализ запроса. регэкспами поди
9 сен 09, 11:18    [7635832]     Ответить | Цитировать Сообщить модератору
 Re: Влияние () на производительность  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36801
relief
анализ запроса. регэкспами поди
Вы бы лучше чем полезным занялись, я не знаю. Например дали бы возможность серверу использовать индекс по датам, если он конечно есть.
9 сен 09, 11:19    [7635841]     Ответить | Цитировать Сообщить модератору
 Re: Влияние () на производительность  [new]
Glory
Member

Откуда:
Сообщений: 104760
relief
Glory
relief
Glory
relief
Верно ли, что лишние скобки увеличивают время работы запроса

Откуда "дровишки" ?


лишние операции выполняются ==> время

И какие операции сервер выполняет со скобками ? И какие из них будут лишними ?


анализ запроса. регэкспами поди

И причем тут выполнение запроса ?
Выполнение идет после компиляции по составленному плану. Или количество скобок влияет и на план ?
9 сен 09, 11:19    [7635842]     Ответить | Цитировать Сообщить модератору
 Re: Влияние () на производительность  [new]
iljy
Member

Откуда:
Сообщений: 8711
relief,

хочется мне увидеть, как вы регэкспами зададите КС-грамматику, или хотя бы скобочное выражение;) не говорите ерунды. Ну и на разбор 2 скобок наверное сервер потратит лишнее время, но вы врядли сможете его отследить хоть какими-то разумными средствами. Можно конечно запустить пару миллионов циклов компиляции, но боюсь даже в этом случае у вас разница будет в пределах погрешности.
9 сен 09, 11:22    [7635859]     Ответить | Цитировать Сообщить модератору
 Re: Влияние () на производительность  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
Встречал человека который принципиально не писал комментарии в скриптах t-sql мотивируя тем, что серверу не нужно будет разбирать эти "пустые" строки при компиляции...
Это походу уже фольклор какой то.

--------------------------------------------------------------
Дьявол кроется в деталях.
9 сен 09, 11:27    [7635894]     Ответить | Цитировать Сообщить модератору
 Re: Влияние () на производительность  [new]
Ivan TB
Member

Откуда:
Сообщений: 90
Glory
Выполнение идет после компиляции по составленному плану. Или количество скобок влияет и на план ?

К примеру, в BOL есть такой текст:
BOL
The WHERE clause can have both application and join constraints. The parser parses only join constraints. It uses the join constraint to find a path from all tables to the fact table and to the dimension tables. The application constraint is used only to specify constraints on a fact table and is passed through without modifications.

Expressions between parentheses are considered to be application constraints. For example, if the expression Sales.Product_ID = Products.Product_ID AND Sales.Customer_ID = Customers.Customer_ID is enclosed in parentheses, it is treated as an application constraint and is not used as a join constraint. It is the responsibility of the client application to ensure that parentheses are used only around application constraints: for example, (Product.Price < 100 AND Product.Category = 1).

Хотя речь там, конечно, о Analysis Services.
9 сен 09, 11:30    [7635915]     Ответить | Цитировать Сообщить модератору
 Re: Влияние () на производительность  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ivan TB

Хотя речь там, конечно, о Analysis Services.

Ну вы еще цитату из Оракла приведите или ДБ2
9 сен 09, 11:35    [7635951]     Ответить | Цитировать Сообщить модератору
 Re: Влияние () на производительность  [new]
Нектотам
Guest
[quot relief]...[quot]Попробуйте так:
Where 
	(First_Date>=DATEADD(day, datediff(day,0,@First_Date),0)) and
	(Last_Date<DATEADD(day, datediff(day,0,@Last_Date)+1,0)) and
	(Status IN (1, 2)) AND (HotelID = @HotelID)
9 сен 09, 11:54    [7636090]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить