Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Производительность?
|
|||
|---|---|---|---|
|
#18+
Привет всем!!! Недавно услышал, что IF...ELSE конструкция работает намного медленнее, чем case. Может кто-нибудь ставил эксперименты на этом поприще. И если это так, то что может заменить данную конструкцию. (Вопрос не критичный, просто интересно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2001, 12:35 |
|
||
|
Производительность?
|
|||
|---|---|---|---|
|
#18+
А зачем их сравнивать? If... else нельзя заменить на case и наоборот, потому что case используется только в выражениях select, а if...else в них использовать нельзя, инчае будете получать нечто вроде - Incorrect syntax near the keyword 'case'. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2001, 13:09 |
|
||
|
Производительность?
|
|||
|---|---|---|---|
|
#18+
Согласен с тобой полностью, и честно говоря не знаю точно что они имели ввиду. Меня же больше волнут другой вопрос: насколько медленно работает IF...ELSE и стоит ли ее избегать (может быть в каких случаях). Потому что по моим небольшим опытам "тормозов" при выполнении этой конструкции я не заметил, не считая времени,которое затрачивается на выполнение запроса (если он присутствует), и в BOL "противопоказаний" по использованию не видел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2001, 15:25 |
|
||
|
Производительность?
|
|||
|---|---|---|---|
|
#18+
Вряд ли IF..ELSE может быть медленной конструкцией... И потом, как правильно сказал Genady, у CASE и IF..ELSE совсем разное назначение. Единственная ситуация, которая приходит в голову - это когда проводится попытка объединить несколько запросов в один, используя case для анализа некоего параметра. Что-то типа: \ndeclare @p int set @p = 1 select col = case @p when 1 then (select один_селект) when 2 then (select другой_селект) end from ... Можно заменить на: \nif @p = 1 select один_селект from ... else if @p = 2 select другой_селект from ... ...или что-то вроде того... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2001, 17:18 |
|
||
|
Производительность?
|
|||
|---|---|---|---|
|
#18+
2 MessMaker Ваш пример наверное единственный случай (не факт, точно не уверен), когда case лучше, потому что если в процедуре поставить такую конструкцию: if @p = 1 select один_селект from ... else if @p = 2 select другой_селект from ... то если @p =1 строится один план запроса и как только @p = 2 получаем перкомпиляцию и новый план запроса P.S. Как строится план заприса в случае использования Case не проверял, возможно что таким же образом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2001, 05:37 |
|
||
|
Производительность?
|
|||
|---|---|---|---|
|
#18+
2 Genady А мне так кажется что строиться два плана запроса сразу и никакой перекомпиляции не происходит. И вообще - надо своё время экономить, а не машинное. Разница в вариантах - максимум доли процента, ради этого не стоит унижаться. Лучше обратить внимание на то, как будет понятней выглядеть. 2 AlexIgnat Не было мыслей спросить, того кто так заявлял, как он сравнивал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2001, 06:00 |
|
||
|
Производительность?
|
|||
|---|---|---|---|
|
#18+
>А мне так кажется что строиться два плана запроса сразу и никакой перекомпиляции не происходит. будет время, проверю. >И вообще - надо своё время экономить, а не машинное. В данном случае соглашусь >Разница в вариантах - максимум доли процента, ради этого не стоит унижаться. Не понял, почему унижаться P.S. По моему мнению проблема не стоит этого... ну этого... яйца скушаного в общем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2001, 06:07 |
|
||
|
Производительность?
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за подержку. Хотя действительно хочется еще поговорить с "авторами" фразы. Единственный еще один маленький вопросик по рипведенному выше примеру, а именно select col = case @p when 1 then (select один_селект) when 2 then (select другой_селект) end from ... Может ли у нас использовать SELECT после THEN, и если может, то скиньте пожалуйста примерчик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2001, 10:09 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32010681&tid=1826030]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 333ms |

| 0 / 0 |
