`
freetosoar
  • 浏览: 35126 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle-创建索引的字段选择原则

 
阅读更多

本文中所讨论的索引是B-Tree索引

  1. WHERE子句中最频繁使用的字段
  2. 联接语句中的联接字段
  3. 选择高选择性的字段(如果很少的字段拥有相同值,即有很多独特值,则选择性很好)

 

另在创建索引时, 还可以充分考虑下面一些情况:

 

  1. ORACLEUNIQUE和主键字段上自动建立索引, 所以无需对主键再创建索引
  2. 在选择性很差的字段上建索引只有在这个字段的值分布非常倾斜的情况下下才有益(在这种情况下,某一,两个字段值比其它字值少出现很多)
  3. 不要在很少独特值的字段上建B-TREE索引,在这种情况下,你可以考虑在这些字段上建位图索引.在联机事务处理环境下,所由并发性非常高,索引经常被修改,所以不应该建位图索引
  4. 不要在经常被修改的字段上建索引.当有UPDATE,DELETE,INSETT操作时,ORACLE除了要更新表的数据外,同时也要更新索引,而且就象更新数据一样,或产生还原和重做条目
  5. 不要在有用到函数的字段上建索引,ORACLE在这种情况,优化器不会用到索引,除非你建立函数索引
  6. 可以考虑在外键字段上建索引,这些索引允许当在主表上UPDATE,DELETE操作时,不需要共享子表的锁,这非常适用于在父表和子表上有很多并发的INSERT,UPDATEDELETE操作的情况
  7. 当建立索引后,请比较一下索引后所获得的查询性能的提高和UPDATE,DELETE,INSERT操作性能上的损失,比较得失后,再最后决定是否需建立这个索引

理解索引的选择性和密度  ?

选择性

选择性可以通过公式度量:(从查询中返回的行/表中所有的行). 表中仅有一行可以满足查询的独特索引具有100%的选择性,并且这种索引总会被使用. 如果返回行的百分比较抵,这个索引就有高度的选择性,它容易被查询优化器选择. 如果百分比高在表中许多行都会被获取,则选择性抵,索引的用处不大. 正如以上提到的,索引选择性至少需要90%. 如果表需要返回超过10%的行,则索引的选择性就太低了,这个索引就会被忽略. 经常的情况是,如果查询要获取的行超过5%,查询优化器就会选择不同的索引或者执行全表扫描. 事实上,在查询优化器选择一个索引之前,它希望可以90%-95%的行.一个比较好的消息就是你可以很容易地度量选择性.如果选择性超过95%,则这个索引就很有可能被选择以满足查询.

密度

密度定义了行中重复值的百分比.密度的范围从0-1.低密度值更受欢迎,高选择性的索引有低的密度值,通常范围从0.05-0.10.如果换算成选择性95%-90%.如果索引上的密度值超过了0.10,它就可能不被使用.当使用非群集索引的时候,数据怎样访问? 数据页会按照索引的次序获取,除了在页需要被再次访问的很少情况下,请求不会是顺序的..

在建立有用的索引的时候,列的唯一性是一个重要的变量.唯一性高对于非群集索引来讲是一个很好的选择.与此相对的,唯一性低对于群集索引来讲是一个很好的备选,唯一性非常小(小于3)的列根本不能被索引.

     选择性可以通过分析索引的分布统计得到.通过使用DBCC SHOWCONTIC 或者DBCC SHOW_STATISTICS 可以检查索引列上的数据分布.它们可以为索引的选择性和密度提供一个很好的度量.DBCC SHOWCONTIC 对于理解一个表或者索引的碎片程度有用.DBCC SHOW_STATISTICS 可以显示索引中包含有多少个重复值.重复值的数量越高,选择性就越低,要记住,在索引选择期间,查询优化器更偏好高选择性.DBCC SHOW_STATISTICS 在度量一个索引效果的时候非常有用.

 

 

分享到:
评论

相关推荐

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    说明:Oracle中需要创建用户一定是要具有dba(数据库管理员)权限的用户才能创建,而且创建的新用户不具备任何权限,连登录都不可以。 用法:create user 新用户名 identified by 密码 例子: 2. 修改密码 说明:...

    ORACLE9i_优化设计与系统调整

    §13.2 创建索引和使用索引 165 §13.2.1 使用函数索引 165 §13.2.2 使用位图索引- 166 §13.2.3 使用B树索引- 166 §13.2.4 使用反向键索引- 166 §13.2.5 使用索引组织表 166 §13.3 使用范围索引 166 §13.4 ...

    数据库技术规范.docx

    目录 数据库技术规范 4 1 建表规范 4 2 使用范围 4 3 概述 4 4 书写 4 5 注释 5 6 Oracle、MySQL、SQL Sever差异 5 7 优化 7 8 索引创建原则 7 9 函数、表达式使用 8 IN/OR子句使用 8 !=或操作符子句使用 8 不要对...

    Oracle中直方图对执行计划的影响详解

    前言 大家应该都知道,在Oracle数据库中,CBO会默认目标列的数据在其最小值low_value和最大值high_value之间均匀...3、在B字段上创建索引 4、删除表中直方图信息 5、查看直方图信息 HISTOGRAM:NONE 代表没有直方图信

    精通SQL--结构化查询语言详解

    4.2.4 多字段非簇索引的创建 69 4.2.5 使用unique关键字创建惟一索引 70 4.2.6 使用clusterde关键字创建簇索引 71 4.2.7 索引的销毁 73 4.2.8 使用索引的几点原则 73 4.3 视图的基础知识 74 4.3.1 视图简介 74...

    精通SQL 结构化查询语言详解

    4.2.4 多字段非簇索引的创建  4.2.5 使用UNIQUE关键字创建惟一索引  4.2.6 使用CLUSTERDE关键字创建簇索引 4.2.7 索引的销毁  4.2.8 使用索引的几点原则  4.3 视图的基础知识  4.3.1 视图简介  4.3.2 ...

    SQL必知必会(第3版)--详细书签版

    第7章 创建计算字段 37 7.1 计算字段 37 7.2 拼接字段 38 7.3 执行算术计算 42 7.4 小结 43 第8章 使用数据处理函数 44 8.1 函数 44 8.2 使用函数 45 8.2.1 文本处理函数 46 8.2.2 日期和时间处理函数 47 ...

    数据库设计规范(3).doc

    5 3.10 索引(Index) 命名规范 5 3.11 约束(Constraint) 命名规范 5 4 数据模型产出物规范 5 附录A:xml文件使用说明 7 附录B:保留关键字 8 编写目的 本文的目的是提出针对Oracle数据库的设计规范,使利用Oracle...

    程序员的SQL金典6-8

     10.4.3 Oracle中的自动增长字段  10.4.4 DB2中的自动增长字段  10.5 业务主键与逻辑主键  10.6 NULL的学问  10.6.1 NULL与比较运算符  10.6.2 NULL和计算字段  10.6.3 NULL和字符串  10.6.4 NULL和函数  ...

    程序员的SQL金典7-8

     10.4.3 Oracle中的自动增长字段  10.4.4 DB2中的自动增长字段  10.5 业务主键与逻辑主键  10.6 NULL的学问  10.6.1 NULL与比较运算符  10.6.2 NULL和计算字段  10.6.3 NULL和字符串  10.6.4 NULL和函数  ...

    程序员的SQL金典4-8

     10.4.3 Oracle中的自动增长字段  10.4.4 DB2中的自动增长字段  10.5 业务主键与逻辑主键  10.6 NULL的学问  10.6.1 NULL与比较运算符  10.6.2 NULL和计算字段  10.6.3 NULL和字符串  10.6.4 NULL和函数  ...

    程序员的SQL金典3-8

     10.4.3 Oracle中的自动增长字段  10.4.4 DB2中的自动增长字段  10.5 业务主键与逻辑主键  10.6 NULL的学问  10.6.1 NULL与比较运算符  10.6.2 NULL和计算字段  10.6.3 NULL和字符串  10.6.4 NULL和函数  ...

    数据库设计规范-编码规范.docx

    c) 编写数据库建数据库、建数据库对象、初始化数据脚本文件 4.3 设计原则 a) 采用多数据文件 b) 禁止使用过大的数据文件,unix系统不大于2GB,window系统不超过500MB c) oracle数据库中必须将索引建立在索引表空间里...

    MySQL索引之主键索引

    在MySQL里,主键索引和辅助索引分别是什么意思,有什么区别? 上次的分享我们介绍了聚集索引和非聚集索引的区别,本次我们继续介绍主键索引和辅助索引的区别。 1、主键索引 主键索引,简称主键,原文是PRIMARY KEY,...

    sql总结.doc

    2.可以加大数据的检索速度,这也是创建索引的主要原因。 3.可以加速表与表之间的连接效率。 4.在分组排序时使用索引,可以减少分组排序的时间。 (6)索引的优缺点 索引的优点既索引的作用。 索引的缺点:1.建立索引...

    asp.net知识库

    通过反射调用類的方法,屬性,字段,索引器(2種方法) ASP.NET: State Server Gems 完整的动态加载/卸载程序集的解决方案 从NUnit中理解.NET自定义属性的应用(转载) 如何在.NET中实现脚本引擎 (CodeDom篇) .NET的插件...

    精通sql结构化查询语句

    索引与视图 5.1 索引的基础知识 5.1.1 索引的概念 5.1.2 索引的类型 5.1.3 索引的结构 5.2 创建索引 5.2.1 创建索引的语句结构 20.3.3 子查询的实现 20.3.4 复合查询的实现 20.4 运算符与表达式的应用 20.4.1 连接...

    程序员的SQL金典.rar

     10.4.3 Oracle中的自动增长字段  10.4.4 DB2中的自动增长字段  10.5 业务主键与逻辑主键  10.6 NULL的学问  10.6.1 NULL与比较运算符  10.6.2 NULL和计算字段  10.6.3 NULL和字符串  10.6.4 NULL和函数  ...

    SQL必知必会(第3版-PDF清晰版)part1

    第7章 创建计算字段...... 37 7.1 计算字段..... 37 7.2 拼接字段..... 38 7.3 执行算术计算..... 42 7.4 小结..... 43 第8章 使用数据处理函数...... 44 8.1 函数..... 44 8.2 使用函数..... 45 8.2.1 文本处理...

    亮剑.NET深入体验与实战精要2

    4.5.2 公有字段传递 177 4.5.3 委托与事件传递 179 4.6 实现个性化窗体界面 181 4.7 无标题窗体拖动的两种方法 183 4.8 让程序只启动一次——单实例运行 184 4.9 实现系统托盘和热键呼出 185 4.10 进程与多线程的...

Global site tag (gtag.js) - Google Analytics