深入解析Oracle的三种join方法
<span class="Apple-style-span" style="font-family: song, Verdana; font-size: 12px; line-height: normal; background-color: rgb(255, 255, 255); "><div class="t_msgfont" id="postmessage_272916" style="word-break: break-all; line-height: 1.8em !important; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; ">NESTED LOOP:<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "><br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">对于被连接的数据子集较小的情况,嵌套循环连接是个较好的选择。在嵌套循环中,内<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">表被外表驱动,外表返回的每一行都要在内表中检索找到与它匹配的行,因此整个查询返回<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">的结果集不能太大(大于1 万不适合),要把返回子集较小表的作为外表(CBO 默认外表是<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">驱动表),而且在内表的连接字段上一定要有索引。当然也可以用ORDERED 提示来改变CBO<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">默认的驱动表,使用USE_NL(table_name1 table_name2)可是强制CBO 执行嵌套循环连接。<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "><br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">HASH JOIN :<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "><br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">散列连接是CBO 做大数据集连接时的常用方式,优化器使用两个表中较小的表(或数据<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">源)利用连接键在内存中建立散列表,然后扫描较大的表并探测散列表,找出与散列表匹配<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">的行。<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">这种方式适用于较小的表完全可以放于内存中的情况,这样总成本就是访问两个表的成<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">本之和。但是在表很大的情况下并不能完全放入内存,这时优化器会将它分割成若干不同的<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">分区,不能放入内存的部分就把该分区写入磁盘的临时段,此时要有较大的临时段从而尽量<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">提高I/O 的性能。<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">也可以用USE_HASH(table_name1 table_name2)提示来强制使用散列连接。如果使用散<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">列连接HASH_AREA_SIZE 初始化参数必须足够的大,如果是9i,Oracle建议使用<a href="http://space.itpub.net/22664653/viewspace-678383" target="_self" style="word-break: break-all; text-decoration: underline; color: rgb(51, 51, 51); line-height: normal !important; " target="_blank"><u style="word-break: break-all; line-height: normal !important; "><strong style="word-break: break-all; line-height: normal !important; ">SQL</strong></u></a>工作区<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">自动<a href="http://space.itpub.net/22664653/viewspace-678383" target="_self" style="word-break: break-all; text-decoration: underline; color: rgb(51, 51, 51); line-height: normal !important; " target="_blank"><u style="word-break: break-all; line-height: normal !important; "><strong style="word-break: break-all; line-height: normal !important; ">管理</strong></u></a>,设置WORKAREA_SIZE_POLICY 为AUTO,然后调整PGA_AGGREGATE_TARGET 即可。<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "><br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">排序合并连接<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "><br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">通常情况下散列连接的效果都比排序合并连接要好,然而如果行源已经被排过序,在执<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">行排序合并连接时不需要再排序了,这时排序合并连接的性能会优于散列连接。可以使用<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">USE_MERGE(table_name1 table_name2)来强制使用排序合并连接</div><div class="t_msgfont" style="word-break: break-all; line-height: 1.8em !important; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "> </div><div class="t_msgfont" style="word-break: break-all; line-height: 1.8em !important; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "></div><div class="t_msgfont" style="word-break: break-all; line-height: 1.8em !important; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "></div><div class="t_msgfont" style="word-break: break-all; line-height: 1.8em !important; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "> </div><div class="t_msgfont" style="word-break: break-all; line-height: 1.8em !important; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><font face="Verdana" style="word-break: break-all; line-height: normal !important; ">Nested loop join:<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "><br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">步骤:确定一个驱动表(outer table),另一个表为inner table,驱动表中的每一行与inner表中的相应记录JOIN。类似一个嵌套的循环。适用于驱动表的记录集比较小(<10000)而且inner表需要有有效的访问方法(Index)。需要注意的是:JOIN的顺序很重要,驱动表的记录集一定要小,返回结果集的响应时间是最快的。<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "><br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">cost = outer access cost + (inner access cost * outer cardinality)<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "><br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "><br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">| 2 | NESTED LOOPS | | 3 | 141 | 7 (15)|<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">| 3 | TABLE ACCESS FULL | EMPLOYEES | 3 | 60 | 4 (25)|<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">| 4 | TABLE ACCESS BY INDEX ROWID| JOBS | 19 | 513 | 2 (50)|<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">| 5 | INDEX UNIQUE SCAN | JOB_ID_PK | 1 | | |<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "><br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "><br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">EMPLOYEES为outer table, JOBS为inner table.<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "><br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">Hash join<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "><br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">步骤:将两个表中较小的一个在内存中构造一个HASH表(对JOIN KEY),扫描另一个表,同样对JOIN KEY进行HASH后探测是否可以JOIN。适用于记录集比较大的情况。需要注意的是:如果HASH表太大,无法一次构造在内存中,则分成若干个partition,写入磁盘的temporary segment,则会多一个写的代价,会降低效率。<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "><br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">cost = (outer access cost * # of hash partitions) + inner access cost<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">--------------------------------------------------------------------------<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">| Id | Operation | Name | Rows | Bytes | Cost (%CPU)|<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">--------------------------------------------------------------------------<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">| 0 | SELECT STATEMENT | | 665 | 13300 | 8 (25)|<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">| 1 | HASH JOIN | | 665 | 13300 | 8 (25)|<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">| 2 | TABLE ACCESS FULL | ORDERS | 105 | 840 | 4 (25)|<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">| 3 | TABLE ACCESS FULL | ORDER_ITEMS | 665 | 7980 | 4 (25)|<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">--------------------------------------------------------------------------<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "><br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "><br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">ORDERS为HASH TABLE,ORDER_ITEMS扫描<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "><br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">Sort merge join<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "><br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">步骤:将两个表排序,然后将两个表合并。通常情况下,只有在以下情况发生时,才会使用此种JOIN方式:<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "><br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">1.RBO模式<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "><br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">2.不等价关联(>,<,>=,<=,<>)<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "><br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">3.HASH_JOIN_ENABLED=false<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "><br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">4.数据源已排序<br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "><br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; ">cost = (outer access cost * # of hash partitions) + inner access cost</font></div><div class="t_msgfont" style="word-break: break-all; line-height: 1.8em !important; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><font face="Verdana" style="word-break: break-all; line-height: normal !important; "></font> </div><div class="t_msgfont" style="word-break: break-all; line-height: 1.8em !important; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "></div><div class="t_msgfont" style="word-break: break-all; line-height: 1.8em !important; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "></div><div class="t_msgfont" style="word-break: break-all; line-height: 1.8em !important; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><font face="Verdana" style="word-break: break-all; line-height: normal !important; "></font> </div><div class="t_msgfont" style="word-break: break-all; line-height: 1.8em !important; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; ">转载biti的一段话: <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 举例,表连接返回一条记录 <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 存在两个表,一个 10条记录 ,一个1000万条记录 <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 若2表都存在连接字段索引,若以小表为驱动表,则 <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 代价: <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 10* (通过索引在大表查询一条记录的代价) <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 若以大表为驱动表: <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 1000万 * (通过索引在小表中查询一条记录的代价) <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 通过索引获取一条记录,10rows的表,代价通常在 3 blocks <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 索引2块,表一块 <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 而如果是1000万的表,索引可能达到4块表一块 <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 这样一来参考上面的计算,你说哪个更好?很显然! <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 小表查询参考 <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> SQL> create table test as select * from all_objects where rownum < 11; <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> Table created. <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> SQL> create index test_index on test(object_id); <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> Index created. <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> SQL> select object_id from test; <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> OBJECT_ID <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> ---------- <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 18159 <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 7781 <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 4841 <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 19891 <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 22549 <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 17099 <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 17712 <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 4287 <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 10107 <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 19135 <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 10 rows selected. <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> Execution Plan <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> ---------------------------------------------------------- <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 0 SELECT STATEMENT ptimizer=CHOOSE <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 1 0 TABLE ACCESS (FULL) OF 'TEST' <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> Statistics <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> ---------------------------------------------------------- <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 0 recursive calls <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 12 db block gets <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 6 consistent gets <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 0 physical reads <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 0 redo size <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 736 bytes sent via SQL*Net to client <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 425 bytes received via SQL*Net from client <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 2 SQL*Net roundtrips to/from client <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 0 sorts (memory) <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 0 sorts (disk) <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 10 rows processed <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> SQL> select * from test where object_id = 4287; <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> OWNER OBJECT_NAME <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> ------------------------------ ------------------------------ <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> ------------------------------ ---------- -------------- ------------------ <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> CREATED LAST_DDL_ TIMESTAMP STATUS T G S <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> --------- --------- ------------------- ------- - - - <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> SYS /1033c8a_SqlTypeWithMethods <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 4287 JAVA CLASS <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 14-NOV-00 03-JUL-03 2003-07-03:11:18:19 INVALID N N N <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> Execution Plan <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> ---------------------------------------------------------- <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 0 SELECT STATEMENT ptimizer=CHOOSE <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 1 0 TABLE ACCESS (BY INDEX ROWID) OF 'TEST' <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 2 1 INDEX (RANGE SCAN) OF 'TEST_INDEX' (NON-UNIQUE) <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> Statistics <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> ---------------------------------------------------------- <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 0 recursive calls <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 0 db block gets <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 3 consistent gets <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 0 physical reads <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 0 redo size <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 1157 bytes sent via SQL*Net to client <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 425 bytes received via SQL*Net from client <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 2 SQL*Net roundtrips to/from client <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 0 sorts (memory) <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 0 sorts (disk) <br style="word-break: break-all; line-height: normal !important; font: normal normal normal 12px/normal song, Verdana; "> 1 rows processed </div></span>
页:
[1]