длинный оракульный запрос - PullRequest
0 голосов
/ 21 июня 2010

У меня действительно длинный и сложный запрос (Oracle 10g). Он содержит около десяти избранных подзапросов. Запрос работает, но он слишком длинный. Должен ли я как-то разделить этот запрос? Я имею в виду, есть ли какой-то стандарт, как долго / сложно может быть SQL-запрос. Запрос работает, но он не кажется мне лучшим решением. Например, один подзапрос повторяется там (он запрашивает таблицу размером менее 20 строк), как я могу сделать это, чтобы запустить его только один раз во время этого запроса? Может быть, это слишком общий вопрос Спасибо за все ответы Тону

Ответы [ 3 ]

2 голосов
/ 21 июня 2010

Начиная с версии 9, вы можете анализировать код SQL практически так же, как любой другой код, используя функцию, называемую факторинг подзапроса, также известную как условие with.

Документация: http://download.oracle.com/docs/cd/B10501_01/server.920/a96540/statements_103a.htm#2075668

Пример: http://download.oracle.com/docs/cd/B10501_01/server.920/a96540/statements_103a.htm#2075888

С уважением, Роб.

0 голосов
/ 21 июня 2010

Я могу только предложить использовать EXPLAIN PLAN, чтобы выяснить, что оптимизатор запросов делает для реорганизации запроса.

Альтернативный подход может заключаться в том, чтобы поговорить с бизнесом и выяснить, чего они действительно хотяти посмотрите в системе, нет ли доступной информации, которая ближе к проблемной области.

Когда-то у меня была такая ситуация с "своевременной доставкой", когда определение "своевременной доставки" было убитоПризнание со стороны руководства среднего звена, стремящегося представить «хорошее новостное шоу», было раздутым до предела из-за особой ситуации.Оттолкнувшись, перейдя к Руководству по управлению, реализовав определение, которое было там, и используя удобную таблицу агрегатов, созданную Oracle EBS, сократил время выполнения с 25 минут до 2 секунд.

0 голосов
/ 21 июня 2010

попробуйте заглянуть в предложение with, один раз он выполняет подзапрос, а затем снова позволяет ссылаться на повторяющиеся строки поверх dover

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...