CBO对于Cost值相同的索引的选择

ian@IAN> create table t1 as select * from dba_objects;
Table created.
Elapsed: 00:00:01.82
ian@IAN> alter table t1 add (object_id1 number);
Table altered.
Elapsed: 00:00:00.61
ian@IAN> update t1 set object_id1=object_id;
72681 rows updated.
Elapsed: 00:00:10.88
ian@IAN> commit;
Commit complete.
Elapsed: 00:00:00.00
ian@IAN> create index a_idx_t1 on t1(object_id);
Index created.
Elapsed: 00:00:01.26
ian@IAN> create index b_idx_t1 on t1(object_id1);
Index created.

ian@IAN> exec dbms_stats.gather_table_stats(user,TABNAME=>'T1',ESTIMATE_PERCENT=>100,CASCADE=>TRUE,NO_INVALIDATE=>FALSE);

PL/SQL procedure successfully completed.

Elapsed: 00:00:01.41

ian@IAN> select index_name,leaf_blocks from user_indexes where table_name='T1';

INDEX_NAME                     LEAF_BLOCKS
------------------------------ -----------
B_IDX_T1                               161
A_IDX_T1                               161

Elapsed: 00:00:00.13

ian@IAN> set autot traceonly exp
ian@IAN> select * from t1 where object_id=1000 and object_id1=1000;
Elapsed: 00:00:00.01

Execution Plan
----------------------------------------------------------
Plan hash value: 86048563

----------------------------------------------------------------------------------------
| Id  | Operation                   | Name     | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |          |     1 |   102 |     2   (0)| 00:00:01 |
|*  1 |  TABLE ACCESS BY INDEX ROWID| T1       |     1 |   102 |     2   (0)| 00:00:01 |
|*  2 |   INDEX RANGE SCAN          | A_IDX_T1 |     1 |       |     1   (0)| 00:00:01 |
----------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter("OBJECT_ID1"=1000)
   2 - access("OBJECT_ID"=1000)

ian@IAN> exec dbms_stats.set_index_stats(ownname=>'IAN',INDNAME=>'B_IDX_T1',NUMLBLKS=>151);

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.01

ian@IAN> select index_name,leaf_blocks from user_indexes where table_name='T1';

INDEX_NAME                     LEAF_BLOCKS
------------------------------ -----------
B_IDX_T1                               151
A_IDX_T1                               161

Elapsed: 00:00:00.02

ian@IAN> select * from t1 where object_id=1000 and object_id1=1000;
Elapsed: 00:00:00.01

Execution Plan
----------------------------------------------------------
Plan hash value: 821240183

----------------------------------------------------------------------------------------
| Id  | Operation                   | Name     | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |          |     1 |   102 |     2   (0)| 00:00:01 |
|*  1 |  TABLE ACCESS BY INDEX ROWID| T1       |     1 |   102 |     2   (0)| 00:00:01 |
|*  2 |   INDEX RANGE SCAN          | B_IDX_T1 |     1 |       |     1   (0)| 00:00:01 |
----------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter("OBJECT_ID"=1000)
   2 - access("OBJECT_ID1"=1000)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
疫情居家办公系统管理系统按照操作主体分为管理员和用户。管理员的功能包括办公设备管理、部门信息管理、字典管理、公告信息管理、请假信息管理、签到信息管理、留言管理、外出报备管理、薪资管理、用户管理、公司资料管理、管理员管理。用户的功能等。该系统采用了MySQL数据库,Java语言,Spring Boot框架等技术进行编程实现。 疫情居家办公系统管理系统可以提高疫情居家办公系统信息管理问题的解决效率,优化疫情居家办公系统信息处理流程,保证疫情居家办公系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理疫情居家办公系统信息,包括外出报备管理,培训管理,签到管理,薪资管理等,可以管理公告。 外出报备管理界面,管理员在外出报备管理界面中可以对界面中显示,可以对外出报备信息的外出报备状态进行查看,可以添加新的外出报备信息等。签到管理界面,管理员在签到管理界面中查看签到种类信息,签到描述信息,新增签到信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值