如果能有automate tools,那很好;不过最好能详细讲解一下建立索引的原理,特别是分析一下为什么有些直接把column放在index里,有些放在include的条件里?
还有,syscat.columns, syscat.coldist如何来查看字段分布和建立索引
在对表做runstats的时候 需要加上with distribution 选项,这样数据库就会统计分布信息。
查看语句如下:
select colname,colcard from syscat.columns where tabname='表名'
select colvalue,valcount,distcount from syscat.coldist where tabname='表名' and colname='字段名' and type='F'
创建索引有些基本的原则,大体如下:
在适当地方定义主键和唯一索引。
创建关于查询用来连接表(Join)的任何列的索引。
创建关于基于常规基础从中搜索特定值的任何列的索引。
创建关于通常用在 ORDER BY 子句中的列的索引。
确保使用了仅检索您需要的数据的谓词。
当创建多列索引时,索引的第一列应该为查询中的谓词最常用的那一列。
确保索引造成的磁盘和更新维护的开销不会太高
关于include列,因为include列只能放在唯一索引的后面,所以,在查询语句当中选择的字段,除了出现在唯一索引中的以外,还有那么几个字段,就可以放在include里面了,实现纯索引的扫描
可以看出,这个要求是非常高的,所以只建议对查询量很大的语句进行这种优化