【问题标题】:Oracle SQL query Optimization with multiple filters and create table使用多个过滤器和创建表的 Oracle SQL 查询优化
【发布时间】:2019-10-12 18:35:38
【问题描述】:

我的选择查询运行了 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
           ;

我希望该查询能够更短地完成。

【问题讨论】:

  • 使用现代连接而不是旧的交叉连接方法
  • @Richie 调优问题在 Stack Overflow 上很困难,因为调优需要大量信息,并且需要大量反复。为了收集更多信息,我建议找到具有实际统计信息的执行计划。为此,请在一个会话中运行该语句,在GV$SQL 中找到SQL_ID,并使用类似select sql_id, sql_fulltext from gv$sql where lower(sql_fulltext) like '%@betsy.world@dsn_310%' 的语句。然后使用如下语句生成 SQL 监控报告:select dbms_sqltune.report_sql_monitor(sql_id => 'SQL_ID from above') from dual;。使用结果编辑问题。

标签: sql oracle optimization


【解决方案1】:

首先,您必须掌握解释计划概念以优化 Oracle 中的查询。在了解解释计划后,我建议逐桌进行。从第一个表开始检查它在解释计划中的执行情况。通过这种方式,您可以找出需要创建的索引。有时无法创建有用的索引。在这种情况下,将数据分成更小的块(表)可能会有所帮助。 Oracle还具有并行查询运行能力。您也可以利用此功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多