一条sql语句,如下:
delete from ifs_ext_branch a
where a.brid>(select min(b.brid)
from ifs_ext_branch b
where a.brid=b.brid)
;
其中brid列上有唯一索引,我在命令行上使用sqlplus查看执行计划,如下所示:----------------------------------------------------------
Plan hash value: 3157192699--------------------------------------------------------------------------------
--------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Ti
me |--------------------------------------------------------------------------------
--------| 0 | DELETE STATEMENT | | 1 | 23 | 1 (0)| 00
:00:01 || 1 | DELETE | IFS_EXT_BRANCH | | | |
|| 2 | NESTED LOOPS | | 1 | 23 | 1 (0)| 00
:00:01 || 3 | VIEW | VW_SQ_1 | 12 | 192 | 1 (0)| 00
:00:01 || 4 | SORT GROUP BY | | 12 | 84 | 1 (0)| 00
:00:01 || 5 | INDEX FULL SCAN| INDX_BRANCH_BRID | 12 | 84 | 1 (0)| 00
:00:01 ||* 6 | INDEX RANGE SCAN | INDX_BRANCH_BRID | 1 | 7 | 0 (0)| 00
:00:01 |
然后使用pl/sql查看执行计划,如下所示:DELETE STATEMENT, GOAL = ALL_ROWS 6 1 23
DELETE SYSTEM IFS_EXT_BRANCH
HASH JOIN 6 1 23
VIEW SYS VW_SQ_1 3 12 192
SORT GROUP BY 3 12 84
TABLE ACCESS FULL SYSTEM IFS_EXT_BRANCH 2 12 84
TABLE ACCESS FULL SYSTEM IFS_EXT_BRANCH 2 12 84
感觉pl/sql的执行计划有问题,不知道是pl/sql的bug还是?
并且把pl/sql关闭了,重新启动,查看执行计划,结果依然不变。
这让我感觉到十分困惑,求解,希望各位大侠不吝赐教,不胜感激。
delete from ifs_ext_branch a
where a.brid>(select min(b.brid)
from ifs_ext_branch b
where a.brid=b.brid)
;
其中brid列上有唯一索引,我在命令行上使用sqlplus查看执行计划,如下所示:----------------------------------------------------------
Plan hash value: 3157192699--------------------------------------------------------------------------------
--------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Ti
me |--------------------------------------------------------------------------------
--------| 0 | DELETE STATEMENT | | 1 | 23 | 1 (0)| 00
:00:01 || 1 | DELETE | IFS_EXT_BRANCH | | | |
|| 2 | NESTED LOOPS | | 1 | 23 | 1 (0)| 00
:00:01 || 3 | VIEW | VW_SQ_1 | 12 | 192 | 1 (0)| 00
:00:01 || 4 | SORT GROUP BY | | 12 | 84 | 1 (0)| 00
:00:01 || 5 | INDEX FULL SCAN| INDX_BRANCH_BRID | 12 | 84 | 1 (0)| 00
:00:01 ||* 6 | INDEX RANGE SCAN | INDX_BRANCH_BRID | 1 | 7 | 0 (0)| 00
:00:01 |
然后使用pl/sql查看执行计划,如下所示:DELETE STATEMENT, GOAL = ALL_ROWS 6 1 23
DELETE SYSTEM IFS_EXT_BRANCH
HASH JOIN 6 1 23
VIEW SYS VW_SQ_1 3 12 192
SORT GROUP BY 3 12 84
TABLE ACCESS FULL SYSTEM IFS_EXT_BRANCH 2 12 84
TABLE ACCESS FULL SYSTEM IFS_EXT_BRANCH 2 12 84
感觉pl/sql的执行计划有问题,不知道是pl/sql的bug还是?
并且把pl/sql关闭了,重新启动,查看执行计划,结果依然不变。
这让我感觉到十分困惑,求解,希望各位大侠不吝赐教,不胜感激。
sqlplus下看的执行计划:Plan hash value: 3157192699--------------------------------------------------------------------------------
--------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Ti
me |--------------------------------------------------------------------------------
--------| 0 | DELETE STATEMENT | | 1 | 23 | 1 (0)| 00
:00:01 || 1 | DELETE | IFS_EXT_BRANCH | | | |
|| 2 | NESTED LOOPS | | 1 | 23 | 1 (0)| 00
:00:01 || 3 | VIEW | VW_SQ_1 | 12 | 192 | 1 (0)| 00
:00:01 || 4 | SORT GROUP BY | | 12 | 84 | 1 (0)| 00
:00:01 || 5 | INDEX FULL SCAN| INDX_BRANCH_BRID | 12 | 84 | 1 (0)| 00
:00:01 ||* 6 | INDEX RANGE SCAN | INDX_BRANCH_BRID | 1 | 7 | 0 (0)| 00
:00:01 |
,顺序5436210
pl/sql下执行计划:0DELETE STATEMENT, GOAL = ALL_ROWS 6 1 23
1 DELETE SYSTEM IFS_EXT_BRANCH
2 HASH JOIN 6 1 23
3 VIEW SYS VW_SQ_1 3 12 192
4 SORT GROUP BY 3 12 84
5 TABLE ACCESS FULL SYSTEM IFS_EXT_BRANCH 2 12 84
6 TABLE ACCESS FULL SYSTEM IFS_EXT_BRANCH 2 12 84
顺序5436210
其实这个东西也不好说 不知道plsql的内部 还是以oracle 自动的sqlplus为准吧