技术开发 频道

索引的应用规律总结

  【IT168技术文档】

  索引的应用规律总结(一)

  建立正确的索引,是提高系统性能的有效方法。正确的索引可能使查询效率提高1000倍,而无效的索引可能是浪费了数据库空间,甚至大大降低查询性能。

  索引的效果是和检索数据的SQL语句、数据库的繁忙程度、数据库空间大小相关的,当数据库性能下降,需要通过调整索引达到提高性能的时候,DBA应该充分考虑到影响索引性能的这些因素来重新构造索引。合理的索引设计要建立在对各种查询的分析和预测上。

  一、索引的管理成本

  1、 存储索引的磁盘空间

  2、 执行数据修改操作(INSERT、UPDATE、DELETE)产生的索引维护

  3、 在数据处理时回需额外的回退空间。

  实际数据修改测试:

  一个表有字段A、B、C,同时进行插入10000行记录测试,在没有建索引时平均完成时间是2.9秒,在对A字段建索引后平均完成时间是6.7秒,在对A字段和B字段建索引后平均完成时间是10.3秒,在对A字段、B字段和C字段都建索引后平均完成时间是11.7秒,从以上测试结果可以明显看出索引对数据修改产生的影响。


  二、索引分类

  <1> 索引按内部结构分类

  1、B*树索引

  B*树索引是最常用的索引,其存储结构类似书的索引结构,有分支和叶两种类型的存储数据块,分支块相当于书的大目录,叶块相当于索引到的具体的书页。一般索引及唯一约束索引都使用B*树索引。

  2、位图索引

  位图索引储存主要用来节省空间,减少ORACLE对数据块的访问,它采用位图偏移方式来与表的行ID号对应,采用位图索引一般是重复值太多的表字段。位图索引在实际密集型OLTP(数据事务处理)中用得比较少,因为OLTP会对表进行大量的删除、修改、新建操作,ORACLE每次进行操作都会对要操作的数据块加锁,所以多人操作很容易产生数据块锁等待甚至死锁现象。在OLAP(数据分析处理)中应用位图有优势,因为OLAP中大部分是对数据库的查询操作,而且一般采用数据仓库技术,所以大量数据采用位图索引节省空间比较明显。

  <2> 索引按功能分类

  1、唯一索引

  唯一索引有两个作用,一个是数据约束,一个是数据索引,其中数据约束主要用来保证数据的完整性,唯一索引产生的索引记录中每一条记录都对应一个唯一的ROWID。

  2、主键索引

  主关键字索引产生的索引同唯一索引,只不过它是在数据库建立主关键字时系统自动建立的。

  3、一般索引

  一般索引不产生数据约束作用,其功能主要是对字段建立索引表,以提高数据查询速度。

  <3> 索引按索引对象分类

  1、单列索引:表单个字段的索引

  2、多列索引:也称“组合索引”,表多个字段的索引

  3、函数索引:对字段进行函数运算的索引

  建立函数索引的方法:(以Oracle函数为例)

create index IDX_PAY_DATE on TAB_PAY_LIST(TRUNC(COL_DATE)) create index IDX_CLIENT_ID on TAB_BANK_CLIENT(MONEY_CODE || CLIENT_ID)

  在对函数进行了索引后,如果当前会话要引用,应设置当前会话的query_rewrite_enabled为TRUE。

alter session set query_rewrite_enabled=true

  注:如果对用户函数进行索引的话,那用户函数应加上deterministic参数,意思是函数在输入值固定的情况下返回值也固定。例:

create or replace function trunc_add(input_date date)return date deterministic as begin return trunc(input_date+1); end trunc_add;

  三、应用索引的扫描分类

  1、INDEX UNIQUE SCAN(按索引唯一值扫描)

select * from zl_yhjbqk where hbs_bh=5420016000

  2、INDEX RANGE SCAN(按索引值范围扫描)

select * from zl_yhjbqk where hbs_bh>5420016000’ select * from zl_yhjbqk where qc_bh>7001

  3、INDEX FAST FULL SCAN(按索引值快速全部扫描)

select hbs_bh from zl_yhjbqk order by hbs_bh select count(*) from zl_yhjbqk select qc_bh from zl_yhjbqk group by qc_bh
0
相关文章