当页导航

创建联合索引时字段顺序问题

DB2中关于联合索引的创建,多个字段的先后顺序有什么建议吗?是把数据区分度高的放前面还是区分度低的放前面?显示全部

DB2中关于联合索引的创建,多个字段的先后顺序有什么建议吗?是把数据区分度高的放前面还是区分度低的放前面?

收起
希望获得:具体解决, 原理分析

7回答

andy_zhanglmandy_zhanglm其它 , IBM
关键看查询条件,如果条件中包括所有在索引中的字段,区分度高低的字段前后位置没有太大关系,复合索引最好用区分度高的字段做第一字段,这样可以迅速缩小索引的搜索范围,当然你的查询条件中要包含这个字段才有效。...显示全部

关键看查询条件,如果条件中包括所有在索引中的字段,区分度高低的字段前后位置没有太大关系,复合索引最好用区分度高的字段做第一字段,这样可以迅速缩小索引的搜索范围,当然你的查询条件中要包含这个字段才有效。

收起
 2017-06-02
  • icycastleicycastle(提问者)
    使用db2advis工具产生索引建议,给出的是区分度低的字段排在了前面,不知道是否合理?
    2017-06-02
  • icycastleicycastle(提问者)
    我的表有6亿行记录,字段1是账户ID,每个账户ID表中有几万条记录,字段2是账期,表中就12个值,比如201701,201702...这种情况下db2advis推荐的索引是(账期,账户ID)
    2017-06-02
andy_zhanglmandy_zhanglm其它 , IBM
db2advis只考虑你给它的SQL语句, 不一定全面, 针对你给的语句它给出的建议应该没问题, 另外注意一下运行db2advis之前,统计信息是否有收集显示全部

db2advis只考虑你给它的SQL语句, 不一定全面, 针对你给的语句它给出的建议应该没问题, 另外注意一下运行db2advis之前,统计信息是否有收集

收起
 2017-06-02
andy_zhanglmandy_zhanglm其它 , IBM
如果查询条件中"账期,账户ID"都出现, 上面db2advis建议的索引没问题, 如果条件中只有"账户ID", 上面的索引效率就有问题显示全部

如果查询条件中"账期,账户ID"都出现, 上面db2advis建议的索引没问题, 如果条件中只有"账户ID", 上面的索引效率就有问题

收起
 2017-06-02
icycastleicycastle数据库管理员 , 浦发银行
统计信息都是最新的,查询条件中包含了账期和账户ID,就针对这个SQL语句不确定账期和账户ID哪个放前面比较好显示全部

统计信息都是最新的,查询条件中包含了账期和账户ID,就针对这个SQL语句不确定账期和账户ID哪个放前面比较好

收起
 2017-06-02
andy_zhanglmandy_zhanglm其它 , IBM
针对这个SQL(查询条件中包含了账期和账户ID), 索引中账期和账户ID哪个放前面都没问题显示全部

针对这个SQL(查询条件中包含了账期和账户ID), 索引中账期和账户ID哪个放前面都没问题

收起
 2017-06-02
icycastleicycastle数据库管理员 , 浦发银行
多谢解答。显示全部

多谢解答。

收起
 2017-06-02

撰写回答

提问者

icycastle数据库管理员, 浦发银行
发布59
回答43