【问题标题】:oracle query taking more execution time in oracle when i m using AND condition当我使用 AND 条件时,oracle 查询在 oracle 中需要更多执行时间
【发布时间】:2020-02-19 23:00:04
【问题描述】:

以下查询在使用 AND 条件 TD.A97 = '4408' 进行过滤时需要更多执行时间,除此之外,我还加入了两个表和两个同义词,您可以帮助我减少此查询的执行时间。

SELECT DISTINCT TC.CUS_ACNT_NBR ,
                TC.CUS_ACNT_ROLE_CD ,
                TD.F_DOCNUMBER,
                TD.A45,
                HD.SHPMNT_NBR, 
                HD.SHPMNT_ID 
FROM   TDOC_CUS_ACNT TC
       INNER JOIN TDOC TD ON TD.F_DOCNUMBER = TC.F_DOCNUMBER 
       INNER JOIN DWH_SHIPMENT_DIM HD ON TD.A45 = HD.SHPMNT_NBR
       INNER JOIN DWH_INVOICE_CHARGE_FACT ICF ON HD.shpmnt_dim_key = ICF.shipment_dim_fk
WHERE  TC.CUS_ACNT_ROLE_CD in ('BILL','SHPR','THRD') 
AND    TD.A97 = '4408' ;

【问题讨论】:

  • 只看一眼?查看 TD.A97 列上的索引是否有帮助。否则,提供解释计划。
  • 如果您向我们展示带和不带 AND 的执行计划,我们或许可以提供帮助。

标签: oracle oracle11g oracle10g


【解决方案1】:

减少执行时间的一种方法是在查询中使用并行提示。

 ALTER TABLE  T PARALLEL 4;

 SELECT  /*+ parallel(4) */    DISTINCT TC.CUS_ACNT_NBR ...

oracle docs

【讨论】:

  • 请告诉我如何在我的查询中使用并行提示,我使用相同的方式但它不起作用。
  • 只需在您的选择语句后添加/*+ parallel */ 提示。这不会改善您的查询,但会使 oracle 充分利用您的物理资源。因此您的查询将被分发以并行运行
【解决方案2】:

解释计划:在我的解释计划下方,带有 AND 条件。

PLAN_TABLE_OUTPUT

Plan hash value: 53520552

----------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                         | Name                | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     | TQ/Ins |IN-OUT| PQ Distrib |
----------------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                  |                     |  1639K|   148M|       | 15382   (1)| 00:00:01 |        |      |            |
|   1 |  PX COORDINATOR                   |                     |       |       |       |            |          |        |      |            |
|   2 |   PX SEND QC (RANDOM)             | :TQ10007            |  1639K|   148M|       | 15382   (1)| 00:00:01 |  Q1,07 | P->S | QC (RAND)  |
|   3 |    HASH UNIQUE                    |                     |  1639K|   148M|   164M| 15382   (1)| 00:00:01 |  Q1,07 | PCWP |            |
|   4 |     PX RECEIVE                    |                     |  1639K|   148M|       | 15382   (1)| 00:00:01 |  Q1,07 | PCWP |            |
|   5 |      PX SEND HASH                 | :TQ10006            |  1639K|   148M|       | 15382   (1)| 00:00:01 |  Q1,06 | P->P | HASH       |
|   6 |       HASH UNIQUE                 |                     |  1639K|   148M|   164M| 15382   (1)| 00:00:01 |  Q1,06 | PCWP |            |
|*  7 |        HASH JOIN                  |                     |  1639K|   148M|       | 12902   (1)| 00:00:01 |  Q1,06 | PCWP |            |
|   8 |         PX RECEIVE                |                     |   434K|    33M|       |  8351   (1)| 00:00:01 |  Q1,06 | PCWP |            |
|   9 |          PX SEND HASH             | :TQ10005            |   434K|    33M|       |  8351   (1)| 00:00:01 |  Q1,05 | P->P | HASH       |
|* 10 |           HASH JOIN BUFFERED      |                     |   434K|    33M|       |  8351   (1)| 00:00:01 |  Q1,05 | PCWP |            |
|  11 |            BUFFER SORT            |                     |       |       |       |            |          |  Q1,05 | PCWC |            |
|  12 |             PX RECEIVE            |                     |   325K|  7636K|       |  2335   (1)| 00:00:01 |  Q1,05 | PCWP |            |
|  13 |              PX SEND HASH         | :TQ10001            |   325K|  7636K|       |  2335   (1)| 00:00:01 |        | S->P | HASH       |
|* 14 |               TABLE ACCESS FULL   | TDOC_CUS_ACNT       |   325K|  7636K|       |  2335   (1)| 00:00:01 |        |      |            |
|  15 |            PX RECEIVE             |                     |   272K|    15M|       |  6015   (1)| 00:00:01 |  Q1,05 | PCWP |            |
|  16 |             PX SEND HASH          | :TQ10004            |   272K|    15M|       |  6015   (1)| 00:00:01 |  Q1,04 | P->P | HASH       |
|* 17 |              HASH JOIN            |                     |   272K|    15M|       |  6015   (1)| 00:00:01 |  Q1,04 | PCWP |            |
|  18 |               PX RECEIVE          |                     |   268K|  5508K|       |   660   (1)| 00:00:01 |  Q1,04 | PCWP |            |
|  19 |                PX SEND HASH       | :TQ10003            |   268K|  5508K|       |   660   (1)| 00:00:01 |  Q1,03 | P->P | HASH       |
|  20 |                 PX BLOCK ITERATOR |                     |   268K|  5508K|       |   660   (1)| 00:00:01 |  Q1,03 | PCWC |            |
|* 21 |                  TABLE ACCESS FULL| TDOC                |   268K|  5508K|       |   660   (1)| 00:00:01 |  Q1,03 | PCWP |            |
|  22 |               BUFFER SORT         |                     |       |       |       |            |          |  Q1,04 | PCWC |            |
|  23 |                PX RECEIVE         |                     |  1769K|    62M|       |  5354   (1)| 00:00:01 |  Q1,04 | PCWP |            |
|  24 |                 PX SEND HASH      | :TQ10000            |  1769K|    62M|       |  5354   (1)| 00:00:01 |        | S->P | HASH       |
|  25 |                  REMOTE           | SHIPMENT_DIM        |  1769K|    62M|       |  5354   (1)| 00:00:01 |   TDIM | R->S |            |
|  26 |         BUFFER SORT               |                     |       |       |       |            |          |  Q1,06 | PCWC |            |
|  27 |          PX RECEIVE               |                     |  6677K|    82M|       |  4550   (1)| 00:00:01 |  Q1,06 | PCWP |            |
|  28 |           PX SEND HASH            | :TQ10002            |  6677K|    82M|       |  4550   (1)| 00:00:01 |        | S->P | HASH       |
|  29 |            REMOTE                 | INVOICE_CHARGE_FACT |  6677K|    82M|       |  4550   (1)| 00:00:01 |   TDIM | R->S |            |
----------------------------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   7 - access("HD"."SHPMNT_DIM_KEY"="ICF"."SHIPMENT_DIM_FK")
  10 - access("TD"."F_DOCNUMBER"="TC"."F_DOCNUMBER")
  14 - filter("TC"."CUS_ACNT_ROLE_CD"='BILL' OR "TC"."CUS_ACNT_ROLE_CD"='SHPR' OR "TC"."CUS_ACNT_ROLE_CD"='THRD')
  17 - access("TD"."A45"="HD"."SHPMNT_NBR")
  21 - filter("TD"."A45" IS NOT NULL AND "TD"."A97"='4408')

Remote SQL Information (identified by operation id):
----------------------------------------------------

  25 - SELECT "SHPMNT_DIM_KEY","SHPMNT_NBR","SHPMNT_ID" FROM "DIM"."SHIPMENT_DIM" "HD" (accessing 'TDIM.WORLD' )

  29 - SELECT "SHIPMENT_DIM_FK" FROM "DIM"."INVOICE_CHARGE_FACT" "ICF" (accessing 'TDIM.WORLD' )


Note
-----
   - dynamic statistics used: dynamic sampling (level=5)
   - Degree of Parallelism is 16 because of table property

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 2014-06-09
    相关资源
    最近更新 更多