Oracle SQL запрос Оптимизация с несколькими фильтрами и создание таблицы - PullRequest
0 голосов
/ 27 мая 2019

Мой запрос на выбор выполняется в течение 15 часов и все еще выполняется, поэтому я отменил его.Как я могу оптимизировать свой запрос?

CREATE TABLE W_PURCH_RCPT_FS_tmp
AS

    SELECT RCV.TRANSACTION_ID,
           PO.RELEASE_DATE,
           NVL (ASL.PROCESSING_LEAD_TIME, MTL.FULL_LEAD_TIME)
               AS PROCESSING_LEAD_TIME
      FROM obia_ui.PO_ASL_ATTRIBUTES@betsy.world@dsn_310      ASL,
           obia_ui.MTL_SYSTEM_ITEMS_B@betsy.world@dsn_310      MTL,
           obia_ui.RCV_TRANSACTIONS@betsy.world@dsn_310       RCV,
           obia_ui.PO_RELEASES_ALL@betsy.world@dsn_310         PO,
           obia_ui.PO_LINES_ALL@betsy.world@dsn_310           LINES,
           obia_ui.PO_LINE_LOCATIONS_ALL@betsy.world@dsn_310   LOC,
           obia_ui.PO_HEADERS_ALL@betsy.world@dsn_310          HEAD
     WHERE  RCV.CREATION_DATE > '30-JUN-2016'
            AND MTL.INVENTORY_ITEM_ID = LINES.ITEM_ID
           AND MTL.ORGANIZATION_ID = LOC.SHIP_TO_ORGANIZATION_ID
           AND LINES.PO_LINE_ID = LOC.PO_LINE_ID
           AND ASL.USING_ORGANIZATION_ID = LOC.SHIP_TO_ORGANIZATION_ID
           AND ASL.ITEM_ID = LINES.ITEM_ID
           AND ASL.VENDOR_ID = HEAD.VENDOR_ID
           AND ASL.VENDOR_SITE_ID = HEAD.VENDOR_SITE_ID
           AND RCV.TRANSACTION_ID = PO.PO_RELEASE_ID
           ;

Я ожидаю, что этот запрос закончится короче.

1 Ответ

0 голосов
/ 27 мая 2019

Прежде всего вам необходимо освоить концепцию плана объяснения для оптимизации запроса в Oracle.После понимания объяснения планов я бы предложил пойти за столом к ​​столу.Начиная с первой таблицы, проверьте, как она работает в плане объяснения.Таким образом, вы можете определить индексы, которые должны быть созданы.Иногда нет способа создать полезный индекс.В этом случае может помочь разделение данных на более мелкие куски (таблицы).Кроме того, Oracle имеет возможности параллельного выполнения запросов.Вы также можете воспользоваться этой функцией.

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