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

Откуда: From Russia
Сообщений: 146
Есть два запроса:
select id, fname, lname, mname, address, 
    case 
          when fname like '%' + @query + '%' then 1
          when lname like '%' + @query + '%' then 2
          when mname like '%' + @query + '%' then 3
    end
from Clients
where fname like '%' + @query + '%' 
   OR lname like '%' + @query + '%'
   OR mname like '%' + @query + '%'


select id, fname, lname, mname, address
from Clients
where fname like '%' + @query + '%' 
   OR lname like '%' + @query + '%'
   OR mname like '%' + @query + '%'


В таблице Clients порядка 200-300 тыс записей.
Запрос возвращает 50-150 записей.

Вопрос, почему оба запроса равны по производительности (план выполнения одинаковый, число операций io одно и то же).
Сиквел, что, на столько умный, что второй раз лайки в селекте не делает?
9 авг 12, 14:59    [12988240]     Ответить | Цитировать Сообщить модератору
 Re: Почему like в селекте не влияет на производительность?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Kudep
Сиквел, что, на столько умный, что второй раз лайки в селекте не делает?

Ну так это видно из плана выполнения
9 авг 12, 15:02    [12988260]     Ответить | Цитировать Сообщить модератору
 Re: Почему like в селекте не влияет на производительность?  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Kudep
(план выполнения одинаковый, число операций io одно и то же).

И что, число колонок разное а план выполнения одинаковый? Приглядитесь к деталям...
9 авг 12, 15:17    [12988392]     Ответить | Цитировать Сообщить модератору
 Re: Почему like в селекте не влияет на производительность?  [new]
Kudep
Member

Откуда: From Russia
Сообщений: 146
SomewhereSomehow
Kudep
(план выполнения одинаковый, число операций io одно и то же).

И что, число колонок разное а план выполнения одинаковый? Приглядитесь к деталям...

Перед селектом добавляется еще один блок Compute Scalar со стоимостью 0.0049 (0%).
9 авг 12, 15:35    [12988585]     Ответить | Цитировать Сообщить модератору
 Re: Почему like в селекте не влияет на производительность?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Kudep
Перед селектом добавляется еще один блок Compute Scalar со стоимостью 0.0049 (0%).

И по-вашему, этого недостаточно ?
9 авг 12, 15:36    [12988589]     Ответить | Цитировать Сообщить модератору
 Re: Почему like в селекте не влияет на производительность?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31993
Kudep
Сиквел, что, на столько умный, что второй раз лайки в селекте не делает?
Делает, но вычисления для полученных строк занимают пренебрежимо малые ресурсы, хоть обвычисляйтесь.

Что и видно из плана запроса:
Kudep
Перед селектом добавляется еще один блок Compute Scalar со стоимостью 0.0049 (0%).
9 авг 12, 15:37    [12988599]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить