最初由 NinGoo 发布
[B]bitmap index对于and/or之类的条件,可以先通过index本身进行and/or操作进行过滤 [/B]
好像也没看出什么来,反而index也没有使用,方便的话给来个例子吧!
[PHP]
XYStest >create table tt as select *from dba_objects;
表已创建。
XYStest >create bitmap index idx_t_map on tt(owner);
索引已创建。
XYStest >explain plan for select owner , object_id , object_name from tt where
owner='SYS' OR object_id=9999;
已解释。
XYStest >select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 264906180
--------------------------------------------------------------------------
| Id| Operation | Name | Rows| Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT||6746 | 632K|32 (4)| 00:00:01 |
|*1 |TABLE ACCESS FULL| TT |6746 | 632K|32 (4)| 00:00:01 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
1 - filter("OWNER"='SYS' OR "OBJECT_ID"=9999)
Note
-----
- dynamic sampling used for this statement
已选择17行。
XYStest >analyze table tt compute statistics;
表已分析。
XYStest >explain plan for select owner , object_id , object_name from tt where
owner='SYS' OR object_id=9999;
已解释。
XYStest >select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 264906180
--------------------------------------------------------------------------
| Id| Operation | Name | Rows| Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT||1239 | 30975 |32 (4)| 00:00:01 |
|*1 |TABLE ACCESS FULL| TT |1239 | 30975 |32 (4)| 00:00:01 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
1 - filter("OWNER"='SYS' OR "OBJECT_ID"=9999)
已选择13行。
XYStest >explain plan for select owner , object_id , object_name from tt where
owner='SYS' and object_id=9999;
已解释。
XYStest >select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 264906180
--------------------------------------------------------------------------
| Id| Operation | Name | Rows| Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT|| 1 |25 |32 (4)| 00:00:01 |
|*1 |TABLE ACCESS FULL| TT | 1 |25 |32 (4)| 00:00:01 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
1 - filter("OBJECT_ID"=9999 AND "OWNER"='SYS')
已选择13行。
XYStest >explain plan for select owner , object_id , object_name from tt where
owner='XYS' OR object_id=9999;
已解释。
XYStest >select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 264906180
--------------------------------------------------------------------------
| Id| Operation | Name | Rows| Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT||1239 | 30975 |32 (4)| 00:00:01 |
|*1 |TABLE ACCESS FULL| TT |1239 | 30975 |32 (4)| 00:00:01 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
1 - filter("OWNER"='XYS' OR "OBJECT_ID"=9999)
已选择13行。
XYStest >select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 3934611468
--------------------------------------------------------------------------------
----------
| Id| Operation
| Name| Rows| Bytes | Cost (%CPU)|
Time |
--------------------------------------------------------------------------------
----------
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT
| | 1 |25 |67 (0)|
00:00:01 |
|*1 |TABLE ACCESS BY INDEX ROWID | TT| 1 |25 |67 (0)|
00:00:01 |
| 2 | BITMAP CONVERSION TO ROWIDS| | | |
|
|
|*3 |BITMAP INDEX SINGLE VALUE | IDX_T_MAP | | |
|
|
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
----------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("OBJECT_ID"=9999)
3 - access("OWNER"='XYS')
已选择16行。
XYStest >explain plan for select /*+ INDEX(TT IDX_T_MAP) */ owner , object_id
, object_name from tt where owner='XYS' and object_id=9999;
已解释。
XYStest >select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 3934611468
--------------------------------------------------------------------------------
----------
| Id| Operation
| Name| Rows| Bytes | Cost (%CPU)|
Time |
--------------------------------------------------------------------------------
----------
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT
| | 1 |25 |67 (0)|
00:00:01 |
|*1 |TABLE ACCESS BY INDEX ROWID | TT| 1 |25 |67 (0)|
00:00:01 |
| 2 | BITMAP CONVERSION TO ROWIDS| | | |
|
|
|*3 |BITMAP INDEX SINGLE VALUE | IDX_T_MAP | | |
|
|
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
----------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("OBJECT_ID"=9999)
3 - access("OWNER"='XYS')
已选择16行。
XYStest >
XYStest >
[/PHP]
|