日期:2014-05-17  浏览次数:20876 次

跨分区的local索引的扫描是怎样的

表t的分区是按列day_id的日期的每一天分区的,
(如20091201、20091202、每天一个分区,每个分区中有两百万条数据,每个月有5000万条数据),
表t在code字段上建有索引,是local索引,create index idx on t(code) local


 sql: select *from
  t
  where
  t.day_id between 20100101 and 20100131 
  and t.code='xxxx';
问题:如果是全局索引的话 ,是从根节点开始扫描,索引有几层就扫描几次,就到达叶子节点。
  那么像上面这句SQL的话,local索引的扫描是怎样的 呢??

------解决方案--------------------
看看执行计划。
------解决方案--------------------
分区索引是一个个独立的索引
使用分区查询的时候,比如你上面的语句,会根据day_id判断需要哪几个分区,也就是说需要哪几个索引,再逐个索引扫描。
------解决方案--------------------
个人理解: 先分区排除,然后分别扫描对应的分区索引,每个分区索引按一个全局索引的方式来扫描。
------解决方案--------------------
探讨

个人理解: 先分区排除,然后分别扫描对应的分区索引,每个分区索引按一个全局索引的方式来扫描。

------解决方案--------------------
先分区排除,找到对应分区,再执行分区索引