索引创建规划设计.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
索引创建规划设计

索引规划设计: 管理索引的准则: 在表中插入数据后创建索引 在正确的表和列上创建索引 为性能而排序索引列 限制每个表的索引数量 删除不再需要的索引 估计索引大小并设置存储参数 为每个索引指定表空间 考虑并行创建索引 考虑创建具有nologging的索引 考虑合并或重建索引时的开销和优点 在停用或删除约束之前考虑开销 B_tree索引:默认和最常用的 B_tree索引:为簇定义的索引 散列簇索引:为散列簇定义的索引 全局和局部索引:涉及到分区表和索引 反向键索引:使用于Oracle Real Application Clusters 应用环境 位图索引:紧凑的,特别使用于具有少量值集的列 基于函数的索引:包含函数/表达式的预先计算的值 域索引:特别针对应用和插件 索引在逻辑上和物理上都不依赖于相关表的数据。作为独立的结构,索引需要存储空间; 标准和位图索引 Create index idx_emp_ename on emp(ename[desc/asc]); Create bitmap index idx_emp_sex on emp(sex);对表操作需要较多的空间,首先应用于数据仓库环境中 复合索引列: 应该将含有最少重复值的列指定为第一列,第二个含有最少重复值的列指定为第二列,依此类推;含有许多重复值或含有较多null值的列不应该包含在索引中;否则需要指定索引的最后列。 全局和局部索引 --创建分区和非分区索引 CREATE TABLE SALES( PRODUCT_ID VARCHAR2(5), SALES_DATE DATE NOT NULL, SALES_COST NUMBER(10)) PARTITION BY RANGE (SALES_DATE)( PARTITION P1 VALUES LESS THAN (TO_DATE(2003-01-01, YYYY-MM-DD)), PARTITION P2 VALUES LESS THAN (TO_DATE(2004-01-01, YYYY-MM-DD)), PARTITION P3 VALUES LESS THAN (MAXVALUE)); create index idx_sales_sales_date on sales(sales_date) local (PARTITION P1,PARTITION P2,PARTITION P3) 当相关表被分区时索引也将分区,索引的分区键和表的分区键是相同的 如果一个表是按照日期进行范围分区,可以在日期上创建索引,并使用表分区相同的范围进行索引分区,叫局部分区索引; create index idx_sales_production_id on sales(product_id); create index idx_sales_sale_cost on sales(sales_cost) global partition by hash(sales_cost) ( partition p1, partition p2); 也可以不使用和表相同的分区模式来创建分区索引,这种索引叫非分区索引或全局索引 在正确的表和列上创建索引 如果经常需要检索大表种少于15%的行,那么就创建索引。这个百分比的变化取决于表扫描的相对速度和相关的行数据如何分发到索引键。 主键约束和唯一约束自动创建索引,但应该在外键上创建索引; 小表不需要索引,如果查询花费时间太长,可能是表增长太快,小表已增长为大表了; 适合创建索引的列 列中的值相对具有唯一性 取值范围大(适合创建常规索引) 取值范围小(适合创建位图索引) 列中有许多空置,但经常查询所有具有值的行。使用{where col_x -9.99 * power(10,125)}或{where col_x is not null}第一种方法好些,因为第一句使用了col_x列上的索引(假设col_x是一个数值列) 不适合创建索引列: 列中有许多空值,但又不查询非空值 LONG和LONG RAW列不能建索引 为性能而排序索引列 在create index语句中,列的排序会影响查询的性能;通常,将最常用的列放在最前面;创建多列的索引来提高查询速度,例如col1,col2,col3,查询只访问col1,或col1和col2,这样的组织可以提高查询的速度;如果只访问col2或只访问col3,或是col2和col3,查询不会使用索引 限制每个表的索引数量 索引越多,修改表的开销越大。特别是插入或删除行时或更改一个列时,表上的所有索引也要被修改;在确定是否创建多个索引时,需要衡量表的读写功能,如果一个表主要用于读,则多一些索引是有好处的,如果经常更好一个表,则索引少一些为好; 删除

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档