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

Откуда:
Сообщений: 132
Доборый день. Затеялся у нас спор с товарищем, что быстрее:
SELECT 
  REZ.<поля>, 
  REZ.changedate 
FROM
  (SELECT 
     <поля>, 
     ..., 
     changedate 
   FROM 
     <таблица>
   WHERE 
     changedate < GETDATE()
  ) REZ

или
SELECT 
  REZ.<поля>, 
  REZ.changedate 
FROM
  (SELECT 
     <поля>, 
     ..., 
     changedate 
   FROM 
     <таблица>
  ) REZ
WHERE 
  REZ.changedate < GETDATE()
8 окт 13, 18:45    [14941539]     Ответить | Цитировать Сообщить модератору
 Re: Рассудите  [new]
Гость333
Member

Откуда:
Сообщений: 3683
BuKTaP
Рассудите

Планы запросов рассудят.

Вы нашли там хотя бы одно отличие?
8 окт 13, 18:51    [14941572]     Ответить | Цитировать Сообщить модератору
 Re: Рассудите  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
это красивый критерий

WHERE 
     changedate < GETDATE()
8 окт 13, 19:45    [14941756]     Ответить | Цитировать Сообщить модератору
 Re: Рассудите  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
BuKTaP
Затеялся у нас спор с товарищем, что быстрее:
Чисто теоретически должно быть одинаково.

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

Я бы накладывал условия максимально близко к таблицам, к которым они применяются, в надежде, что оптимизатор их быстрее учтёт.
8 окт 13, 21:15    [14941998]     Ответить | Цитировать Сообщить модератору
 Re: Рассудите  [new]
BuKTaP
Member

Откуда:
Сообщений: 132
это красивый критерий

ошибся чутка :)
WHERE 
     changedate < GETDATE() - 7

к примеру

Чисто теоретически должно быть одинаково.

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

Я бы накладывал условия максимально близко к таблицам, к которым они применяются, в надежде, что оптимизатор их быстрее учтёт.

Вот и я ему про то. Как раз внутри там сложный запрос, не стал его писать для простоты восприятия.

Всем спасибо за участие.
9 окт 13, 10:09    [14943135]     Ответить | Цитировать Сообщить модератору
 Re: Рассудите  [new]
смотрю_тут
Member

Откуда:
Сообщений: 1368
BuKTaP
это красивый критерий

ошибся чутка :)
WHERE 
     changedate < GETDATE() - 7

к примеру

Чисто теоретически должно быть одинаково.

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

Я бы накладывал условия максимально близко к таблицам, к которым они применяются, в надежде, что оптимизатор их быстрее учтёт.

Вот и я ему про то. Как раз внутри там сложный запрос, не стал его писать для простоты восприятия.

Всем спасибо за участие.

а планы сравнить не получается?
9 окт 13, 10:14    [14943153]     Ответить | Цитировать Сообщить модератору
 Re: Рассудите  [new]
SFlash
Member

Откуда:
Сообщений: 143
смотрю_тут,

Предположу что первый быстрее будет, при условии что внутренний запрос не просто выборка по условию.
Если внутренний запрос сложнее чем просто выборка, то все операции будут работать над уже отфильтрованными данными, т.е. над меньшим количеством записей, чем если бы они сначала были бы обработаны, и только потом отфильтрованы ненужные.
9 окт 13, 12:01    [14943863]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить