分区列和索引列不匹配的问题

clipboard.png

上面是高性能mysql一书中的片段,第七章内容。

问题
(1)作者说,如果索引列和分区列不匹配,也就是假设说a上有索引,b上没有索引 , 在b上进行分区(我这个理解对吧??),因为 .... 所以 扫描B上的索引就需要.... 这话感觉逻辑上有问题呐,前面都说了b上面没有索引,b列做分区,那么为什么 有提到 扫描b上的索引如何如何呢??? 作者说的怎么理解?

(2) 我们假定 a上有索引,b上没有索引,然后b上分区,假定b是年份,也就是按照2010年一张分区表,2011年一张分区表 ...2017年一张分区表。
那么当我查询 指定b=2012 的时候是不是就可以定位到了分区表2012??? 如果是那么此时 不就可以认为 : 即使b上没有索引,仍然实现了分区过滤了吗??? 逻辑上有问题吗?

各位高手、前辈能通俗解释下吗,非常感谢!!

阅读 3.9k
1 个回答

1、作者说的索引列和分区列不匹配是指你的sql语句where条件的包含带有索引的列但不包含分区列的情况,这时候不管分区列有没有索引都不会进行分区过滤。扫描列B上的索引应该是打印错误,扫描A上的索引才需要检索所有分区内A的索引。

2、直接使用分区字段筛选是可以进行分区过滤的。分区列并不需要一定是索引列。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题