首页 > 代码库 > SQL反模式学习笔记13 使用索引

SQL反模式学习笔记13 使用索引

2014-10-14 10:29:53 

目标:优化性能

        改善性能最好的技术就是在数据库中合理地使用索引。

    索引也是数据结构,它能使数据库将指定列中的某个值快速定位在相应的行。

 

反模式:无规划的使用索引

  1、不使用索引或索引不足

  2、使用了太多的索引或一些无效的索引

    (1)大多数数据库会自动地位主键建立索引,因此额外再定义一个索引就是冗余。

                  这个额外的索引并无任何好处,它只会成为额外的开销。

    (2)字符串索引很大,而且也不太可能对它进行全匹配查找

    (3)使用组合索引是一个很好的选择,但是大部分创建的组合索引都是冗余或者很少使用。

                  组合索引的顺序也很重要:在查询条件、联合条件或者排序规则上使用索引时按照从左到右的顺序

  3、执行了一些让索引无能为力的查询

    Like、表达式,都可能使索引无效。

 

如何识别反模式:当出现以下情况时,可能是反模式

  1、这是我的查询语句,怎样使它更快?

  2、我在每个字段上都定义了索引,为什么它没有变的更?

  3、我听说索引会使数据库变慢,所以我不使用它。

 

合理使用反模式

    分离率是衡量数据库索引的一个指标。分离率越高索引效率就越高。

          需要时刻关注你的数据库中索引的分离率,并且抛弃那些低效的索引。

 

解决方案:MENTOR你的索引

  1、Measure测量:大多数数据库都提供了一些方法来记录执行SQL查询的耗时,因此可以来定位最耗时的查询。

  2、Explain解释:测量之后,分析查询变慢的原因。

          每个数据库都使用一种优化工具为每次查询选择最合适的索引,并生产分析报表,称之为“查询执行计划(QEP)”。

  3、Nominate挑选:有了查询优化工具的QEP报表,应该仔细地查找那些没有使用索引的查询操作。

  4、Test测试:创建完索引之后,需要重新测试跟踪那些查询,确认你的改动确实提升了性能。

  5、Optimize优化:索引是小型的、频繁使用的数据结构,因为很适合将他们常驻在内存中。内存操作的性能是磁盘I/O操作的好几倍。

          数据库服务器允许你配置缓存所需要的系统内存大小。   

  6、Rebuild重组:索引在平衡的时候其效率最高,当你更新或者删除记录时,索引就逐渐变得不平衡。 

       要想最大限度地使用索引,因此要定期对索引进行维护。

 

结论:了解你的数据库,了解你的查询,然后MENTOR你的索引

SQL反模式学习笔记13 使用索引