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

Откуда:
Сообщений: 31
 IIf([План-Факт]![22_П-Ф] Is Not Null,22,IIf([План-Факт]![21_П-Ф] Is Not Null,21,
IIf([План-Факт]![20_П-Ф] Is Not Null,20,IIf([План-Факт]![19_П-Ф] Is Not Null,19,
IIf([План-Факт]![18_П-Ф] Is Not Null,18,IIf([План-Факт]![17_П-Ф] Is Not Null,17,
IIf([План-Факт]![16_П-Ф] Is Not Null,16,IIf([План-Факт]![15_П-Ф] Is Not Null,15,
IIf([План-Факт]![14_П-Ф] Is Not Null,14,IIf([План-Факт]![13_П-Ф] Is Not Null,13,
IIf([План-Факт]![12_П-Ф] Is Not Null,12,IIf([План-Факт]![11_П-Ф] Is Not Null,11,
IIf([План-Факт]![10_П-Ф] Is Not Null,10,Null))))))))))))) AS [10-22]

Помогите оптимизировать функцию в запросе. Она ищет ненулевые значения в полях, начиная с последнего (22_П-Ф), и возвращает определенное число. Очень притормаживает!!! Как бы вывернуться и упростить такую громозкую вещь?
13 окт 05, 10:44    [1964601]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация функции IF  [new]
Latuk
Member

Откуда: N 54°38', E 037°35'
Сообщений: 7310
Switch
F1
13 окт 05, 11:00    [1964679]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация функции IF  [new]
Yanis
Member

Откуда: Казахстан, Актау
Сообщений: 4219
Я сейчас только что ради интереса попробовал в одной старой программе заменить ИИФы (9 уровень вложенности) на свич.

Исходные данные:
машина Центрино 1600, 512 ОЗУ, Акцесс 97 ср2.
Таблица 200000 строк
На ее основе запрос, в результате получается 130000 строк, одно из полей вычисляется теми самыми ИИФами
После выполнения запроса я выполняю сортировку по вычисляемому полю, чтобы Акцесс явно пересчитал каждую запись этого поля.

Результаты:
При использовании ИИФа я дождался такой сортировки через несколько минут.
При использовании Свича я ничего не дождался, Акцесс занял 99% процессора, отменить сортировку тоже не удалось, пришлось снимать задачу. Ждал минут 10

Posted via ActualForum NNTP Server 1.3

13 окт 05, 13:00    [1965464]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация функции IF  [new]
AlTis
Member

Откуда: Penza - Moscow
Сообщений: 1099
Public функцию напиши, внутри Case
13 окт 05, 13:46    [1965801]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация функции IF  [new]
Latuk
Member

Откуда: N 54°38', E 037°35'
Сообщений: 7310
>При использовании Свича я ничего не дождался
По крайней мере читабельней (нелюблю я эти вложенные IIF глаза сломать можно)

А если использовать что ХХ+NULL=>NULL , а ХХ & NULL=>XX

Val("22;"+STR([План-Факт]![22_П-Ф]) & "21;"+STR([План-Факт]![21_П-Ф]) & ...
...........................................
"10;"+STR([План-Факт]![10_П-Ф]) AS [10-22]

PS STR нужен если [План-Факт]![XXX] число если строка то STR убрать
13 окт 05, 14:54    [1966145]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация функции IF  [new]
grossu
Member

Откуда:
Сообщений: 31
Yanis

Результаты:
При использовании ИИФа я дождался такой сортировки через несколько минут.
При использовании Свича я ничего не дождался, Акцесс занял 99% процессора, отменить сортировку тоже не удалось, пришлось снимать задачу. Ждал минут 10
Posted via ActualForum NNTP Server 1.3


Да если свитч не быстрее то уж лучше на IIF остаться. Кстати максимум вложений у него 15 или около того.
Select...Case написал бы. Но если пишу как функцию и ставлю в поле, то рекорсеты тормозят. Я с ними не очень
13 окт 05, 15:45    [1966539]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация функции IF  [new]
Yanis
Member

Откуда: Казахстан, Актау
Сообщений: 4219
grossu> Да если свитч не быстрее то уж лучше на IIF остаться

А ты попробуй, может быть у меня какие-то дополнительные факторы роль сыграли.


Latuk> По крайней мере читабельней (нелюблю я эти вложенные IIF глаза сломать можно)

Полностью согласен, но функцию когда-то писать пробовал, тоже работало медленнее чем ИИФ... Может руки кривые, не знаю...

Posted via ActualForum NNTP Server 1.3

13 окт 05, 16:34    [1966838]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация функции IF  [new]
Iskander68
Member

Откуда: Королев М.О.
Сообщений: 877

Может, этот ужас как-нибудь все-таки реляционными средствами победить? Схему данных
пересмотреть? Выглядит ВЕСЬМА обескураживающе. Например, вынести эти поля в отдельную
таблицу (с одним полем ТипЧегоТоТам), связать ее с первой, и искать в подчиненной поле со
ненулевым значением (+ еще какой-нибудь критерий)?

--
Regards
Alexander Artamonov


"grossu" <nospam@sql.ru> сообщил/сообщила в новостях следующее: news:1966539@sql.ru...
Yanis

Результаты:
При использовании ИИФа я дождался такой сортировки через несколько минут.
При использовании Свича я ничего не дождался, Акцесс занял 99% процессора, отменить
сортировку тоже не удалось, пришлось снимать задачу. Ждал минут 10
Posted via ActualForum NNTP Server 1.3


Да если свитч не быстрее то уж лучше на IIF остаться. Кстати максимум вложений у него 15 или
около того.
Select...Case написал бы. Но если пишу как функцию и ставлю в поле, то рекорсеты тормозят. Я
с ними не очень
Тема Ответить

Posted via ActualForum NNTP Server 1.3

13 окт 05, 17:37    [1967139]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация функции IF  [new]
Iskander68
Member

Откуда: Королев М.О.
Сообщений: 877

Например, вынести эти поля в отдельную
таблицу (с одним полем ТипЧегоТоТам), связать ее с первой, и искать в подчиненной поле со
ненулевым значением (+ еще какой-нибудь критерий)?

С одним полем в смысле с двуми - одно внешний ключ, другое значение этого ТипЧегоТоТам

--
Regards
Alexander Artamonov



Posted via ActualForum NNTP Server 1.3

13 окт 05, 17:54    [1967246]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить