购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

21.实现优良的索引设计

要创建合适的索引,确实需要了解驱动特定应用的SQL,从而能最充分地理解访问模式。不过很多情况下,甚至还未创建任何SQL就要求DBA创建索引。这就意味着,要在对SQL一无所知的情况下创建索引来优化SQL性能,这确实是一个难度很大的任务。如果不了解驱动应用的SQL语句以及每个语句执行的频率,将很难创建合适的索引。对应用调优时,其中一部分工作就是随着应用开发的进行或者在做全面测试时创建和/或修改索引。

创建索引时有一些基本规则:

·按工作负载索引,而不是按对象。

·根据常用查询谓词构建索引。

·一定要索引使用最多的查询。

·为所有主键和外键列创建索引。

·对ORDER BY、GROUP BY或DISTINCT子句中频繁使用的列创建索引,以避免排序。

·考虑增加列加重一些索引的负担,以鼓励只能使用索引(index-only)访问。

·对需要确保唯一性的列创建索引。

·特别注意哪个索引应当定义为聚簇索引。见本章后面的调优技巧#57。

·如果索引包含多个列,要明智地选择列的顺序,这一点很重要。一般来讲,索引的第一列应当是一个高基数列。

·对于WHERE子句中用AND连接并频繁结合使用的列,使用组合索引会很有好处,这样可以避免维护多个索引。

说明:检查驱动应用的SQL,并查看所有插入、更新和删除活动。这些语句对索引会有很大影响。如果必须以某种方式修改这些索引的列,由于DB2要保持索引是最新的,这就会引入额外的开销。对于每个插入和删除,DB2不仅要对这个数据执行相应活动,还必须对每个索引执行相应的动作,从而导致更大开销。所以倘若在一个表上执行一个Insert语句,这个表中定义了5个索引,就会完成6次修改来满足插入请求,这包括对基本数据文件的一次插入,另外还要对各个索引文件分别做一次插入。 a2zAez+CNFhhxeTr0EqzsFpbgjAUPtlC/9L1WjHFtMVWQpOOQ+6eg/SGur2SGZ9+

点击中间区域
呼出菜单
上一章
目录
下一章
×