Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
6-1100769845
Madrid
2004-11-18 12:24
2005.02.06
создание сетевого теста


14-1105993542
Некто
2005-01-17 23:25
2005.02.06
Прокси


1-1106318220
Eraser
2005-01-21 17:37
2005.02.06
TJvRichEdit и распознавание смайликов.


1-1106514807
Raider
2005-01-24 00:13
2005.02.06
Как изменить цвет заголовка окна ?


1-1106416265
Bobby Digital
2005-01-22 20:51
2005.02.06
StringGird





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский