Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.06;
Скачать: CL | DM;

Вниз

В какую сторону можно оптимизировать запрос?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.047 c
1-1106279118
Poha
2005-01-21 06:45
2005.02.06
AutoCad


14-1105859833
YurikGL
2005-01-16 10:17
2005.02.06
Подскажите нормальный дизайнер БД


3-1104947532
Rule
2005-01-05 20:52
2005.02.06
Не могу восстановить БД Firebird 1.5 из gbk


4-1103311169
sashas
2004-12-17 22:19
2005.02.06
Использование стандартных шрифтов


14-1106199071
Бабу
2005-01-20 08:31
2005.02.06
только мне не видно?