除了DB2ADVIS,还有什么办法来根据SQL语句建立索引

如果能有automate tools,那很好;不过最好能详细讲解一下建立索引的原理,特别是分析一下为什么有些直接把column放在index里,有些放在include的条件里?

还有,syscat.columns, syscat.coldist如何来查看字段分布和建立索引

参与17

3同行回答

DB-TrendSetterDB-TrendSetter联盟成员数据库架构师公司
创建索引是指定include的作用在于将非索引键存储在非聚集索引的叶级索引页面上,这样作的好处是不增加索引大小(level)的情况下,增大索引的覆盖范围。另外如果列过长,索引的效率也是极低的,include能用到的场景不多。syscat.coldist表可以查看到表中各个列的数据分布情况,VALUECO...显示全部
  1. 创建索引是指定include的作用在于将非索引键存储在非聚集索引的叶级索引页面上,这样作的好处是不增加索引大小(level)的情况下,增大索引的覆盖范围。另外如果列过长,索引的效率也是极低的,include能用到的场景不多。
  2. syscat.coldist表可以查看到表中各个列的数据分布情况,VALUECOUNT,COLVALUE都是常用的
收起
电信运营商 · 2018-05-25
浏览2549
nxdynxdy系统运维工程师nj
在对表做runstats的时候 需要加上with distribution 选项,这样数据库就会统计分布信息。查看语句如下:select colname,colcard from syscat.columns where tabname='表名'select colvalue,valcount,distcount from syscat.coldist where tabname='表名' and colname='字段...显示全部

在对表做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'

收起
银行 · 2018-05-25
浏览2411
libai21libai21课题专家组软件架构设计师海通证券
创建索引有些基本的原则,大体如下:在适当地方定义主键和唯一索引。 创建关于查询用来连接表(Join)的任何列的索引。 创建关于基于常规基础从中搜索特定值的任何列的索引。 创建关于通常用在 ORDER BY 子句中的列的索引。 确保使用了仅检索您需要的数据的谓词。当创建多列索引...显示全部

创建索引有些基本的原则,大体如下:
在适当地方定义主键和唯一索引。
创建关于查询用来连接表(Join)的任何列的索引。
创建关于基于常规基础从中搜索特定值的任何列的索引。
创建关于通常用在 ORDER BY 子句中的列的索引。
确保使用了仅检索您需要的数据的谓词。
当创建多列索引时,索引的第一列应该为查询中的谓词最常用的那一列。
确保索引造成的磁盘和更新维护的开销不会太高

关于include列,因为include列只能放在唯一索引的后面,所以,在查询语句当中选择的字段,除了出现在唯一索引中的以外,还有那么几个字段,就可以放在include里面了,实现纯索引的扫描
可以看出,这个要求是非常高的,所以只建议对查询量很大的语句进行这种优化

收起
证券 · 2018-05-25

提问者

steve25
数据库管理员IBM

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2018-05-24
  • 关注会员:4 人
  • 问题浏览:5868
  • 最近回答:2018-05-25
  • X社区推广