oracle hint 谓词推进,谓词不推入,除了加HINT还有别的办法?

该博客探讨了一个SQL查询的执行计划,展示了如何通过索引来优化查询性能。查询涉及到MTL_SKU_CMD、MTL_ORDERHEADERS和MTL_ITEMS_ALL_V等多个表的联接操作,通过INDEXUNIQUESCAN、INDEXRANGESCAN等方法减少扫描行数。关键的限制条件包括ORDERNO_NOSPLIT和SKU_CMD_ID的特定值。查询最终通过COUNTSTOPKEY和ROWNUM=1来获取单条结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

explain plan for

select /*+  push_pred(i) */ o.Orderno_Nosplit

From Mtl_Sku_Cmd c, Mtl_Items_All_v i, Mtl_Orderheaders o

Where i.Orderno = o.Orderno

And c.Psbid = i.Psbid

And i.Itemcode = c.Item_Code

And c.Sku_Cmd_Id = 696309553

And o.Orderno_Nosplit = '9226782140002'

And Rownum = 1

select * from table(DBMS_XPLAN.display);

Plan hash value: 1121572433

---------------------------------------------------------------------------------------------------------

| Id  | Operation                       | Name                  | Rows  | Bytes | Cost (%CPU)| Time     |

---------------------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT                |                       |     1 |   107 |    25   (0)| 00:00:01 |

|*  1 |  COUNT STOPKEY                  |                       |       |       |            |          |

|   2 |   NESTED LOOPS                  |                       |     1 |   107 |    25   (0)| 00:00:01 |

|   3 |    NESTED LOOPS                 |                       |     2 |   166 |     7   (0)| 00:00:01 |

|   4 |     TABLE ACCESS BY INDEX ROWID | MTL_SKU_CMD           |     1 |    39 |     4   (0)| 00:00:01 |

|*  5 |      INDEX UNIQUE SCAN          | ID                    |     1 |       |     3   (0)| 00:00:01 |

|   6 |     TABLE ACCESS BY INDEX ROWID | MTL_ORDERHEADERS      |     2 |    88 |     3   (0)| 00:00:01 |

|*  7 |      INDEX RANGE SCAN           | IX_OH_ORDERNO_NOSPLIT |     2 |       |     2   (0)| 00:00:01 |

|   8 |    VIEW                         | MTL_ITEMS_ALL_V       |     1 |    24 |     9   (0)| 00:00:01 |

|   9 |     UNION ALL PUSHED PREDICATE  |                       |       |       |            |          |

|* 10 |      TABLE ACCESS BY INDEX ROWID| MTL_ITEMS             |     1 |    32 |     5   (0)| 00:00:01 |

|* 11 |       INDEX RANGE SCAN          | IX_PACKEDITEM_PSBID   |     2 |       |     4   (0)| 00:00:01 |

|* 12 |      TABLE ACCESS BY INDEX ROWID| MTL_ITEMS_DETAIL      |     1 |    31 |     4   (0)| 00:00:01 |

|* 13 |       INDEX RANGE SCAN          | IX_ITEMS_DETAIL_PSBID |     2 |       |     3   (0)| 00:00:01 |

---------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

1 - filter(ROWNUM=1)

5 - access("C"."SKU_CMD_ID"=696309553)

7 - access("O"."ORDERNO_NOSPLIT"='9226782140002')

10 - filter("ORDERNO"="O"."ORDERNO" AND "ITEMCODE"="C"."ITEM_CODE")

11 - access("PSBID"="C"."PSBID")

12 - filter("ORDERNO"="O"."ORDERNO" AND "ITEMCODE"="C"."ITEM_CODE")

13 - access("PSBID"="C"."PSBID")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值