首页 理论教育数据库性能:索引的正确使用

数据库性能:索引的正确使用

【摘要】:目前为止主要介绍了索引的概念,现在开始介绍哪种情况要使用索引。为正确使用索引,应熟练掌握以下五个内容:理解索引和表的大小、访问范围对性能的影响,熟练掌握相关索引的正确使用方法。了解组合索引的使用标准和使用方案。与查找相比DML的负担更大时,执行较多DML语句时若使用索引则会成为降低系统性能的原因。

在前文中,已介绍了索引的种类和设计时的注意事项等与索引相关的许多内容。 目前为止主要介绍了索引的概念,现在开始介绍哪种情况要使用索引。为正确使用索引,应熟练掌握以下五个内容:

(1)理解索引和表的大小、访问范围对性能的影响,熟练掌握相关索引的正确使用方法。

(2)熟练掌握无法使用索引时判断不能使用索引的原因并解决问题的方法。

(3)了解组合索引的使用标准和使用方案。

(4)了解访问数据时决定数据范围的条件和过滤数据的条件分别用在哪个步骤。

(5)了解索引变化情况,并按数据类型了解避免该问题的方案。

由前文已知,使用索引有一定的标准。当然现场可能会出现不可预知的变数,但大部分情况下,使用索引时考虑该标准可确保良好的性能。(www.chuimin.cn)

索引对象列是指经常出现在条件语句的列。经常出现在多个条件语句的列可判断为使用较频繁,所以会成为生成索引的对象。即便实际只出现在一个条件语句中,如果频繁地使用该SQL语句,也会成为生成索引的对象。选择索引对象应注意以下问题:

(1)在索引扫描中最重要的是数据扫描范围。如果将选择度不良的列用做索引,要扫描的范围会变得非常大。因此要将扫描范围变窄,需要将选择度良好的列选为生成索引的对象。

(2)连接条件中没有索引时连接方法变更,可能会产生大量I/O。 JOIN技术中会学习到,若不使用索引进行连接,将进行SORT MERGE JOIN而造成性能不良。因此,应考虑对参与连接条件的大部分列使用索引。

使用索引造成损失时的情形有以下几种:

(1)对于数据较少的表(16 Block以内),数据少到能够一次性使用I/O扫描整个表的程度时,或者列中有较多相同值时,FULL-TABLE SCAN更为有效。但对于OLTP[2]系统,考虑DB BUFFER的hit ratio时最好引导为索引扫描。

(2)与查找相比DML的负担更大时,执行较多DML语句时若使用索引则会成为降低系统性能的原因。对查找时获得的性能提高和DML时性能下降的损益分歧点进行分析,考虑是否生成索引。