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

基于成本的优化器(CBO, Cost-Based Optimizer)对索引的选择性进行判断来决定索引的使用是否能提高效率. 如果索引有很高的选择性, 那就是说对于每个不重复的索引键值,只对应数量很少的记录. 比如, 表中共有100条记录而其中有80个不重复的索引键值. 这个索引的选择性就是80/100 = 0.8 . 选择性越高, 通过索引键值检索出的记录就越少. 如果索引的选择性很低, 检索数据就需要大量的索引范围查询操作和ROWID 访问表的 操作. 也许会比全表扫描的效率更低.   下列…
oracle 10g下有几种扫描方式,注意最后一种扫描方式,当对分区的列进行计算时,会不走分区.这跟对索引列进行计算会导致无法用索引一样. --扫描单个分区  PARTITION RANGE SINGLE    --连续扫描多个分区 PARTITION RANGE ITERATOR    --不连续扫描多个分区  PARTITION RANGE INLIST    --扫描全分区 PARTITION RANGE ALL SQL> drop table t_range purge; SQL> c…
Hash Join是Oracle CBO时代经常出现的一种连接方式,对海量数据处理时经常出现在执行计划里.本篇的上篇(http://space.itpub.net/17203031/viewspace-697442) 介绍了Hash Join的一些外部特征和操作算法流程,下面我们一起看下一些影响到Hash Join的重要参数和内部指标. 3.Hash Join相关参数 Hash Join是CBO优化器才能生成的执行计划操作,如果是选择了RBO就不能生成包括Hash Join的执行计划.此外,与H…
今天发现一个Oracle测试库的字符集设置不正确,原本的字符集是UTF-8,正确的字符集应该是ZHS16GBK,因为UTF-8是ZHS16GBK的超集,无法修改,只能重建数据库,幸好该测试库上还没有数据. 虽然用DBCA也可以创建数据库,但我个人更喜欢手工创建数据库,其主要步骤如下(数据库版本11.2): 1. 设置ORACLE_SID 默认的ORACLE_SID是orcl,我个人强烈建议起个唯一.且意义的名字,比如**testdb,**proddb等等,在Oracle用户下执行: export…
在建表之前最好新建一个用户,因为在sys用户下的表格不允许删除列, 所以最好不要在sys用户下建表. 一.在Oracle SQLplus下建用户: 1.以dba身份登陆SQLplus: [oracle@localhost etc]$ sqlplus /nolog SQL*Plus: Release 11.2.0.4.0 Production on Tue Jun 28 16:19:47 2016 Copyright (c) 1982, 2013, Oracle. All rights reser…
1 右击“计算机”-->管理-->服务和应用程序-->服务,停掉所有Oracle相关的服务(以Oracle打头的,比如OracleDBConsoleorcl). 2 开始-->所有程序-->Oracle-->Oracle安装产品-->Universal Installer,“欢迎使用”界面启动后,卸载产品-->展开Oracle主目录下的OraDb11g_home1-->勾选Oracle Database 11g11.2.0.1.0-->删除--&…
oracle表空间变更导致主键索引失效,重建索引即可…
利用 Oracle EM 企业管理器 进行oracle SQL的优化(自动生成索引) ##应用情景 项目中有大量的SQL,尤其是涉及到统计报表时,表关联比较多,当初开发建表时也没搞好索引关联的,上线后发现查询很低.Oracle自带的EM控制台带有自动优化功能,能给出优化方案,本人主要利用其来给出索引的建立方案,应用上后SQL查询效率大大提高.本人机器上安装的是oracle 11g ##启动EM的环境条件 1. 安装并正常启动oracle 11g 2. 确认oracle控制台的服务是启动的 ![C…
一直以来,都觉得Connection假设设置了setAutoCommit(false)后.启动手工事务提交.必须手工进行commit或者rollback才行.今天正好遇到一个问题.结果大跌眼镜. 于是測试了一下.结果例如以下(请注意在oracle驱动下,其它环境未知): 1.设置了setAutoCommit(false)后运行兴许DML的数据更新操作,没有显式手工进行commit或者rollback,最后设置setAutoCommit(true).后关闭连接,默认提交成功. 2.设置了setAu…
缩小Oracle目录下UNDOTBS01.DBF文件的大小 分类: Oracle 使用sys用户登录Oracle 方法一:重置表空间大小 执行ALTER DATABASE DATAFILE 'D:ORACLEORADATAUNDOTBS01.DBF' RESIZE 100M; 其中 'D:ORACLEORADATAUNDOTBS01.DBF' 为您系统中UNDOTBS01.DBF文件的存储路径;100M为重置后的大小,根据需要修改 如果方法一无法执行,可使用方法二 方法二:新建UNDO表空间,替…