Форум: "Базы";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
ВнизВ какую сторону можно оптимизировать запрос? Найти похожие ветки
← →
Sergey13 © (2004-12-30 10:25) [40]Мое ИМХО - подзапросы (в том же Оракле) и ХП (возвращающие НД) в ИБ - это практически одно и то-же. Я даже думаю, что часто в ИБ использование ХП - это просто способ обойти отсутствие подзапросов. Вот вроде в ФБ2 обещают поддержку подзапросов, к чему бы это?
Кроме того сами по себе много мелких запросов не всегда дают нужный результат - их результаты надо еще объединить - а это уже интересная (как минимум) задача.
Хотя конечно в каждом конкретном случае - конкретное решение.
← →
Danilka © (2004-12-30 10:29) [41]Боюсь, что через какое-то время могут вылезти нехилые тормоза - ты рассчитываешь обороты на лету, с начала времен и по заданную дату. С каждым месяцем запрос все тяжелее и тяжелее будет отрабатываться.
На мой взгляд, самый лучший вариант сделать отдельную таблицу, в которой хранить обороты и сальдо за месяц. Например, у нас это сделано ввиде отдельной операции у клиента, кроме того, есть опарация "закрытие месяца", которая также ее пересчитывает, и больше за этот месяц никакие документы крячиться не могут. Чтобы что-то исправить - можно его заново открыть. Можно открыть только последний закрытый месяц, и закрыть только первый открытый. Все в бухгалтерии довольны и счастливы. :))
И еще, в Орокле вместо CASE можно использовать DECODE, на мой взгляд намного нагляднее и удобнее. :))
← →
k2 © (2004-12-30 10:45) [42]to Danilka © (30.12.04 10:29) [41]
в книжке Мишра/Бьюли "Секреты Oracle SQL" рекомендуют таки case использовать (у нас 9.2) "Выражения CASE выполняются быстрее чем DECODE. Так как case встроено в грамматику, нет необходимости в вызове функции для оценки логики if-then-else. Для одного вызова разница во времени исполнения будет мизерной, но при работе с большими множествами суммарная экономия времени на вызове функции станет значительной."
← →
Danilka © (2004-12-30 10:50) [43][42] k2 © (30.12.04 10:45)
Понятно, спасибо, буду теперь знать, а то у меня этих декодов много. :)
← →
Sandman25 © (2004-12-30 11:04) [44]cnt03cnt10.cnt10_id = 882 OR cnt03cnt10.cnt10_id = 883 можно заменить на
cnt03cnt10.cnt10_id in [882,883]
← →
k2 © (2004-12-30 11:09) [45]Sandman25 © (30.12.04 11:04) [44]
спасибо, и от deb/cr избавилась
← →
Danilka © (2004-12-30 11:35) [46][45] k2 © (30.12.04 11:09)
разнесла на два разных поля val_int_deb и val_int_cr? Тогда сразу и SUM (val_int_deb - val_int_cr) sum_val стоит сделать по-моему.
← →
Sergey13 © (2004-12-30 11:46) [47]2[44] Sandman25 © (30.12.04 11:04)
Скорее всего оптимизатор все равно переделает на OR. ИМХО.
← →
k2 © (2004-12-30 11:48) [48]Danilka © (30.12.04 11:35) [46]
если чесно больше всего мне не нравится union, ведь шерстятся одни и те же таблицы два раза с разницей в одно малюсенькое условие :( ..
← →
Sandman25 © (2004-12-30 12:15) [49][47] Sergey13 © (30.12.04 11:46)
Возможно. Но хотя бы читабельность останется.
← →
Sandman25 © (2004-12-30 12:18) [50][48] k2 © (30.12.04 11:48)
AND (props.crec_cd_pk = contr.pk or props.crec_db_pk = contr.pk)
ну и изменить извлекаемые поля, конечно
← →
Petr V. Abramov © (2004-12-30 12:57) [51]> Мое ИМХО - подзапросы (в том же Оракле) и ХП (возвращающие НД)
> в ИБ - это практически одно и то-же. Я даже думаю, что часто в
> ИБ использование ХП - это просто способ обойти отсутствие
> подзапросов
И я, и я того же мнения
Страницы: 1 2 вся ветка
Форум: "Базы";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.052 c