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

Подскажите, пожалуйста, на сколько уменьшается скорость запроса, если в нем учавствует оператор CASE ???
17 июн 11, 10:32    [10826336]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос к ГУРУ  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Сферический запрос в вакууме всегда работает одинаково, что с case, что без него.
17 июн 11, 10:33    [10826345]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос к ГУРУ  [new]
Вопрос к ГУРУ
Guest
Извините, плиз, имел ввиду на сколько увеличивается время и следует ли избегать CASE при больших объемах данных
17 июн 11, 10:36    [10826370]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос к ГУРУ  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Вопрос к ГУРУ
Извините, плиз, имел ввиду на сколько увеличивается время и следует ли избегать CASE при больших объемах данных
Хорошо. Запросы бывают разные, case'ы бываю разные. Вы про какие именно запросы и кейсы спрашиваете?
17 июн 11, 10:38    [10826377]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос к ГУРУ  [new]
Вопрос к ГУРУ
Guest
Как долго будет работать конструкция в SELECT-е на 10 млн. записях:

CASE @isSeeMN
WHEN 1 THEN cZakaz
ELSE 0
END AS cZakaz,
CASE @isSeeMN
WHEN 1 THEN cOtgr
ELSE 0
END AS cOtgr,
CASE @isSeeMN
WHEN 1 THEN cTrnsit
ELSE 0
END AS cTrnsit
17 июн 11, 10:52    [10826486]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос к ГУРУ  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4994
Вопрос к ГУРУ
Как долго будет работать конструкция в SELECT-е на 10 млн. записях:

CASE @isSeeMN
WHEN 1 THEN cZakaz
ELSE 0
END AS cZakaz,
CASE @isSeeMN
WHEN 1 THEN cOtgr
ELSE 0
END AS cOtgr,
CASE @isSeeMN
WHEN 1 THEN cTrnsit
ELSE 0
END AS cTrnsit

без сомнения 736,239501 секунд!
17 июн 11, 11:01    [10826543]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос к ГУРУ  [new]
Нектотам
Guest
Вопрос к ГУРУ
Как долго будет работать конструкция в SELECT-е на 10 млн. записях:

Если эти 10 млн замисей не лежат в памяти и эти записи типичного размера в сотни байт (не 8 кб и не 16 байт), и все они участвуют в итоговой выборке, то скорее всего на современном железе ограничивающим фактором будет скорость чтения с диска и отдачи клиенту, а не процессорное время для CASE
17 июн 11, 11:06    [10826578]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос к ГУРУ  [new]
Уленшпигель
Member

Откуда:
Сообщений: 115
Вопрос к ГУРУ,

поскольку case в селекте работает с уже готовым набором данных в памяти и сводится к, по сути, подстановке указателя на нужное поле в строке готового набора данных, то время его работы, скорее всего, будет ничтожно, по сравнению со временем чтения 10 млн записей с диска.
17 июн 11, 11:10    [10826618]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос к ГУРУ  [new]
Вопрос к ГУРУ
Guest
Спасибо всем за ответы :)
17 июн 11, 11:29    [10826741]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос к ГУРУ  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 35396
Блог
Потом окажется, что этот case в условии запроса или в условии соединения таблиц)
17 июн 11, 13:12    [10827808]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос к ГУРУ  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
Критик
Потом окажется, что этот case в условии запроса или в условии соединения таблиц)
В CASE возможны разные сложные подзапросы в несметном количестве...
Или вызовы скалярных UDF
17 июн 11, 13:15    [10827839]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос к ГУРУ  [new]
Уленшпигель
Member

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

ответ был на заданный вопрос с примером - про case в селекте без udf. понятное дело, что если там вызывается аццкая UDF, которая сама читает 10 млн. записей, то влияние case на общее время выполнения может очень сильно увеличиться.
17 июн 11, 13:19    [10827881]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить