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

Откуда:
Сообщений: 4
Подскажите, как можно оптимизировать след. конструкцию:
SET bum = 1;
IF bum > 2;
SET bum = 3;

и т.д.

Несколько таких конструкций
22 авг 14, 14:05    [16480002]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса  [new]
Glory
Member

Откуда:
Сообщений: 104760
Hajer
Подскажите, как можно оптимизировать след. конструкцию:

Оставить только
SET bum = 1;
Потому что IF bum > 2; никогда не выполнится
22 авг 14, 14:08    [16480021]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса  [new]
Konst_One
Member

Откуда:
Сообщений: 11540
case when @bum > 2 then 3 else 1 end;
Hajer
Подскажите, как можно оптимизировать след. конструкцию:
SET bum = 1;
IF bum > 2;
SET bum = 3;

и т.д.

Несколько таких конструкций


что есть bum ?
22 авг 14, 14:08    [16480025]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса  [new]
Hajer
Member

Откуда:
Сообщений: 4
Допустим запрос такого вида c датами:

SET @MonthNumber = 1;
        IF @DayInYearNumber > 28
            SET @MonthNumber = 2;
        IF @DayInYearNumber > 63
            SET @MonthNumber = 3;
        IF @DayInYearNumber > 91
            SET @MonthNumber = 4;
        IF @DayInYearNumber > 119
            SET @MonthNumber = 5;
        IF @DayInYearNumber > 154
            SET @MonthNumber = 6;
        IF @DayInYearNumber > 182
            SET @MonthNumber = 7;
        IF @DayInYearNumber > 210
            SET @fMonthNumber = 8;
        IF @DayInYearNumber > 245
            SET @MonthNumber = 9;
        IF @DayInYearNumber > 273
            SET @MonthNumber = 10;
        IF @DayInYearNumber > 301
            SET @MonthNumber = 11;
        IF @DayInYearNumber > 336
            SET @MonthNumber = 12;
        
22 авг 14, 14:14    [16480072]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса  [new]
Hajer
Member

Откуда:
Сообщений: 4
Как его можно оптимизировать? Когда большое количество IF-ов
22 авг 14, 14:15    [16480076]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
А чего просто не сипользовать Month от dateadd?
22 авг 14, 14:17    [16480091]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса  [new]
Glory
Member

Откуда:
Сообщений: 104760
Hajer
Допустим запрос такого вида c датами:

Здесь нет запросов.

Hajer
Когда большое количество IF-ов

Сделайте таблицы
RangeBegin RangeEnd RangeValue
и занесите туда все ваши IF-ы
22 авг 14, 14:18    [16480099]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса  [new]
Hajer
Member

Откуда:
Сообщений: 4
Немного не понял. Момжно пример?
22 авг 14, 14:19    [16480103]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса  [new]
o-o
Guest
Hajer
Немного не понял. Момжно пример?

пример на идею от Махх:
declare @DayInYearNumber int = 155;
declare @MonthNumber int = month(dateadd(dd, @DayInYearNumber, '20121231'));
select @MonthNumber as MonthNumber;
---
MonthNumber
6

прибавляете к своей базовой дате (в примере '20121231') сколько нужно дней
и берете месяц получившейся даты
22 авг 14, 15:00    [16480429]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить