|
你的10G计划:
循环在order_lines的索引ORL_FK_PRD按照范围搜索orl.product_id=101234的数据;(#6)
每找到一条就根据order_lines的ROWID回order_lines表取出order_id; (#5)
每找到一个order_id就去orders的索引ORD_PK做唯一搜索,找出orders的ROWID; (#8)
每找到一个orders的ROWID就回orders表取出orders的其整行数据(#7)
新的11G计划:
里层循环:
循环在order_lines的索引ORL_FK_PRD按照范围搜索orl.product_id=101234的数据;(#7)
每找到一条就根据order_lines的ROWID回order_lines表取出order_id; (#6)
每找到一个order_id就去orders的索引ORD_PK做唯一搜索,找出orders的ROWID; (#8)
在#8找到ROWID之后,并不立即回表取数据,而是保存起来做第二次循环。
外层循环:
根据#8存下来的那些ROWID,批量回表去读取数据(#9),有些行数据是同在一个块的,只需读一次,节省了IO。
至于你说的“看的云里雾里”,请给出一个具体的例子,到底那一个步骤看不懂? |
|