分区表是否需要创建索引

咨询一个SQL执行性能的问题背景如下:
1个明细表T1,数据量在20亿以上,按日期(tx_date)创建的分区表,一个SQL语句:select * from t1 where tx_date='日期',有没有必要在tx_date上创建一个索引。

本人用db2advis,给出的答案是建议创建一个索引。

求高手解答???
参与7

4同行回答

leo_wynleo_wyn商业智能工程师Security
回复 1# jakey2413    其实分区表最大的用处是 高效的 "分区迁移” 和 分区消除   1、db2advis 给的创建的索引建议是什么? 如果是 日期(tx_date) loacl partition index ,  每个分区只有一个固定值    如果是 日期(tx_date)global p...显示全部
回复 1# jakey2413

   其实分区表最大的用处是 高效的 "分区迁移” 和 分区消除
   1、db2advis 给的创建的索引建议是什么? 如果是 日期(tx_date) loacl partition index ,  每个分区只有一个固定值

    如果是 日期(tx_date)global partition index,这个索引会比较小,因为分区键的不同值相对数据量很小




   2、我觉得没有必要对
日期(tx_date)进行索引,已经作为分区键,查询中已经实现了“分区消除”




    3、针对你的SQL, 这样的设计已经可以,但实际中查询每个周期的名细很少,是不是还有其他的“谓词过滤”条件,看能否根据这些创建 loacl partition index



    4、如遇到跨分区交叉查询(如同比、环比)等,使用确定的分区固定值直接连接就好收起
系统集成 · 2014-06-11
浏览1180
jakey2413jakey2413软件架构设计师GD
或者换一种说法,如果分区表中SQL语句的where条件为分区键,还有必要创建分区索引吗?而且每个分区的分区键对应的值都是一个值,非一个大范围。显示全部
或者换一种说法,如果分区表中SQL语句的where条件为分区键,还有必要创建分区索引吗?
而且每个分区的分区键对应的值都是一个值,非一个大范围。收起
银行 · 2014-06-10
浏览1157
jakey2413jakey2413软件架构设计师GD
回复 2# jeffbeck 但是我实际上提取的是分区表中某一个分区的所有数据,创建索引能有什么效果呢?显示全部
回复 2# jeffbeck

但是我实际上提取的是分区表中某一个分区的所有数据,创建索引能有什么效果呢?收起
银行 · 2014-06-10
浏览1167
jeffbeckjeffbeck数据库管理员某银行
速度可以接受,就不用创建索引。想提高查询效率就创建索引,最好是创建分区索引(V9.7.1以后可以创建分区索引)显示全部
速度可以接受,就不用创建索引。
想提高查询效率就创建索引,最好是创建分区索引(V9.7.1以后可以创建分区索引)收起
银行 · 2014-06-10
浏览1207

提问者

jakey2413
软件架构设计师GD
擅长领域: 数据库分布式系统服务器

相关问题

相关文章

问题状态

  • 发布时间:2014-06-10
  • 关注会员:2 人
  • 问题浏览:20317
  • 最近回答:2014-06-11
  • X社区推广