oracle CBO下使用更具选择性的索引

基于成本的优化器(CBO, Cost-Based Optimizer)对索引的选择性进行判断来决定索引的使用是否能提高效率.

如果索引有很高的选择性, 那就是说对于每个不重复的索引键值,只对应数量很少的记录.

比如, 表中共有100条记录而其中有80个不重复的索引键值. 这个索引的选择性就是80/100 = 0.8 . 选择性越高, 通过索引键值检索出的记录就越少.

如果索引的选择性很低, 检索数据就需要大量的索引范围查询操作和ROWID 访问表的

操作. 也许会比全表扫描的效率更低.

 

下列经验请参阅:

a.       如果检索数据量超过30%的表中记录数.使用索引将没有显著的效率提高.

b.       在特定情况下, 使用索引也许会比全表扫描慢, 但这是同一个数量级上的

区别. 而通常情况下,使用索引比全表扫描要块几倍乃至几千倍!

原文地址:https://www.cnblogs.com/fanweisheng/p/11125587.html

时间: 2024-10-17 06:57:43

oracle CBO下使用更具选择性的索引的相关文章

oracle 10g下范围分区扫描的几种方式

oracle 10g下有几种扫描方式,注意最后一种扫描方式,当对分区的列进行计算时,会不走分区.这跟对索引列进行计算会导致无法用索引一样. --扫描单个分区  PARTITION RANGE SINGLE --连续扫描多个分区 PARTITION RANGE ITERATOR --不连续扫描多个分区  PARTITION RANGE INLIST --扫描全分区 PARTITION RANGE ALL SQL> drop table t_range purge; SQL> create tab

oracle 11g下冷备数据库

1.关闭数据库 [email protected]>shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down. 2.退出[email protected]>exitDisconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionWith the Partitioning,

oracle linux下oracle 10g启动EM、isqlplus及相关命令语法

转载:http://hancang2000.blog.sohu.com/139239421.html ORACLE_HOME/bin/emctl start dbconsole $ORACLE_HOME/bin/isqlplusctl start emctl常用命令语法: emctl start dbconsole启动EM console服务,使用前需要先设置ORACLE_SID环境变量 emctl stop dbconsole停止EM console服务,使用前需要先设置ORACLE_SID环

oracle win7下 卸载

1 右击“计算机”-->管理-->服务和应用程序-->服务,停掉所有Oracle相关的服务(以Oracle打头的,比如OracleDBConsoleorcl). 2 开始-->所有程序-->Oracle-->Oracle安装产品-->Universal Installer,“欢迎使用”界面启动后,卸载产品-->展开Oracle主目录下的OraDb11g_home1-->勾选Oracle Database 11g11.2.0.1.0-->删除--&

Oracle Linux6下安装Oracle 12c实战

经过N次安装尝试吐血总结,希望对大家有所帮助,同时做下记录备忘: 总结:安装前的准备工作是关键!!!Check and recheck! 参考:http://docs.oracle.com/cd/E16655_01/install.121/e17741/toc.htm#CEGHFFGG ***********************ORACLE 12C 安装步骤******************************************** 0.准备软件:Oracle Linux 6.4

Oracle 11g下ORA-00119和ORA-00132错误的解决

在启动数据库时出现下列错误 [[email protected] ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Mon May 5 21:56:00 2014 Copyright (c) 1982, 2013, Oracle.  All rights reserved. Connected to an idle instance. [email protected]>startupORA-00119: inv

Oracle 11g下自动创建分区

11g之前,维护分区需要手工.11g之后使用interval来实现自动扩展分区,简化了维护. 根据年  INTERVAL(NUMTOYMINTERVAL(1,'YEAR')) 根据月  INTERVAL(NUMTOYMINTERVAL(1,'MONTH')) 根据天  INTERVAL(NUMTODSINTERVAL(1,'DAY')) 下面用按月自动扩展来做个试验: SQL> create table t_range (id number not null PRIMARY KEY, test_

Oracle 10g下ocr和votedisk的管理

ocr和votedisk是什么? 作为集群,oracle cluster需要共享存储来存放整个集群的配置信息,ocr便是用例存放这些配置信息的地方,ocr的存储容量一般不会太大,在10g下,oracle建议256M已经足以.ocr必须需要存储在集群文件系统或者裸设备上,出于性能上的考虑,本人建议将ocr建立在裸设备上,性能高并且管理也不复杂(ocr和votedisk的数量一般不会太多).ocr中存放的是集群的配置信息,这些信息只能在一个节点上进行维护操作,这一节点叫做Master Node,其他

Oracle 11g下重现library cache lock等待事件

从下面的例子中可以看到,在生产数据库中对象的重新编译会导致library cache lock,所以应该尽量避免在业务高峰期编译对象.如果是package或过程中存在复杂的依赖关系就极易导致library cache lock的出现,所以在应用开发的过程中,也应该注意这方面的问题. session1: SQL> select * from v$version; BANNER -------------------------------------------------------------