oracle索引介绍与高性能sql优化

oracle索引介绍与高性能sql优化

ID:8979620

大小:35.30 KB

页数:13页

时间:2018-04-13

oracle索引介绍与高性能sql优化_第1页
oracle索引介绍与高性能sql优化_第2页
oracle索引介绍与高性能sql优化_第3页
oracle索引介绍与高性能sql优化_第4页
oracle索引介绍与高性能sql优化_第5页
资源描述:

《oracle索引介绍与高性能sql优化》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、ORACLE索引介绍与高性能SQL优化2007-9-19来源:不详作者:佚名点击:481次窗体顶端窗体底端什么是索引    索引是建立在表的一列或多个列上的辅助对象,目的是加快访问表中的数据;    Oracle存储索引的数据结构是B*树,位图索引也是如此,只不过是叶子节点不同B*数索引;    索引由根节点、分支节点和叶子节点组成,上级索引块包含下级索引块的索引数据,叶节点包含索引数据和确定行实际位置的rowid。    使用索引的目的  加快查询速度  减少I/O操作  消除磁盘排序    何时使用索引  查询返回的记录数  排序表<4

2、0%  非排序表 <7%  表的碎片较多(频繁增加、删除)    索引的种类  非唯一索引(最常用)  唯一索引  位图索引  局部有前缀分区索引  局部无前缀分区索引  全局有前缀分区索引  散列分区索引  基于函数的索引    管理索引的准则    在表中插入数据后创建索引    。在用SQL*Loader或import工具插入或装载数据后,建立索引比较有效;    索引正确的表和列    。经常检索排序大表中40%或非排序表7%的行,建议建索引;  。为了改善多表关联,索引列用于联结;  。列中的值相对比较唯一;  。取值范围(大:B

3、*树索引,小:位图索引);  。Date型列一般适合基于函数的索引;  。列中有许多空值,不适合建立索引    为性能而安排索引列    。经常一起使用多个字段检索记录,组合索引比单索引更有效;  。把最常用的列放在最前面,例:dx_groupid_serv_id(groupid,serv_id),在where条件中使用groupid或groupid,serv_id,查询将使用索引,若仅用到serv_id字段,则索引无效;  。合并/拆分不必要的索引。    限制每个表索引的数量    。一个表可以有几百个索引(你会这样做吗?),但是对于频

4、繁插入和更新表,索引越多系统CPU,I/O负担就越重;  。建议每张表不超过5个索引。    删除不再需要的索引    。索引无效,集中表现在该使用基于函数的索引或位图索引,而使用了B*树索引;  。应用中的查询不使用索引;  。重建索引之前必须先删除索引,若用alter index … rebuild重建索引,则不必删除索引。    索引数据块空间使用    。创建索引时指定表空间,特别是在建立主键时,应明确指定表空间;  。合理设定pctfress,注意:不能给索引指定pctused;  。估计索引的大小和合理地设置存储参数,默认为表空

5、间大小,或initial与next设置成一样大。    考虑并行创建索引    。对大表可以采用并行创建索引,在并行创建索引时,存储参数被每个查询服务器进程分别使用,例如:initial为1M,并行度为8,则创建索引期间至少要消耗8M空间;    考虑用nologging创建索引    。对大表创建索引可以使用nologging来减少重做日志;  。节省重做日志文件的空间;  。缩短创建索引的时间;  。改善了并行创建大索引时的性能。  怎样建立最佳索引    明确地创建索引  create index index_name on tabl

6、e_name(field_name)  tablespace tablespace_name  pctfree 5  initrans 2  maxtrans 255  storage  (  minextents 1  maxextents 16382  pctincrease 0  );    创建基于函数的索引    。常用与UPPER、LOWER、TO_CHAR(date)等函数分类上,例:  create index idx_func on emp (UPPER(ename)) tablespace tablespace_name

7、;    创建位图索引    。对基数较小,且基数相对稳定的列建立索引时,首先应该考虑位图索引,例:  create bitmap index idx_bitm on class (classno) tablespace tablespace_name;    明确地创建唯一索引    。可以用create unique index语句来创建唯一索引,例:  create unique index dept_unique_idx on dept(dept_no) tablespace idx_1;    创建与约束相关的索引    。可以用

8、using index字句,为与unique和primary key约束相关的索引,例如:  alter table table_name  add constraint PK_

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。