索引并不仅仅是为了特定的应用程序或特定的读取类型而创建的,在搜集读取类型时不仅要考虑现在正在使用的,也要顾及未来有可能出现的读取类型,通过对现有和可能出现的读取类型进行综合性的分析来创建战略性的索引。
按照系统所处阶段的不同可以将索引的构建工作分为两大类:
其一,在应用程序的开发阶段进行的新索引构建。
其二,在系统的运行阶段为了实现系统的最优化所进行的索引重构。
在索引的设计中,系统处于开发和运行阶段两者之间唯一的区别就是在搜集读取类型的方法上存在着差异。
系统性的索引选定步骤:
1.全面搜集表的读取类型
由于系统的开发和运行阶段之间存在着很大的差异,所以针对这两个阶段所采用的方法自然不同。在还没有开始开发应用程序时,正确地把握将要出现的多样化的读取类型绝非易事。但是,绝不能因为该项工作比较困难而试图在没有任何索引的状态下开发系统,或者试图在系统完全开发结束之后再设计索引,这种构想非常危险,是一种不可取的做法。
2.索引对象列的选定及离散度的调查
*在读取类型中频繁出现的列
*在索引的前面必须要制定的列
*预测对执行速度有影响的其他列
如果某些特定的列总是以组合的形式出现,那么不仅要调查各个列的离散度,而且还要调查其组合的离散度。
优先决定处于最优先地位的读取类型将对构建战略性索引非常有利。
3.为特殊读取类型选定索引
如果只使用某个单独列就可以获得较好的执行速度,则该列应当被优先决定。
4.检查聚簇
索引最大的缺陷就是在使用它读取大范围数据时,会发生大量的随机读取,使得执行速度急剧下降。为了弥补这个缺陷,可以通过使用聚簇来有效地读取大范围数据。在列的离散度较差时,聚簇的效率就能够得到充分的发挥,对于离散度较好的列,只需要为其构建有效的索引就可以实现快速查询数据。
5.组合索引的构成以及索引列序的决定
6.试验和测试
7.调查和修改需要修改的应用程序
8.统一应用