为什么建立分区了,select * from table_name partition(part_name)还是全表扫描呢?

时间:2022-12-26 15:08:32
怎么不是分区扫描啊?

select * from table_name 
where part_name = 'A'也是全表扫描!为什么?

7 个解决方案

#1


索引是本地索引吗?part_name是分区关键字?

分区最主要的两个作用就是高可管理性与可扩展性,并没有说性能的提升。因为大表的分区,我们可以方便的管理一个分区而不至于是整张表,但是,如果不是按照分区条件进行的查询,而索引又是本地索引,查询需要分开到多个本地索引树去扫描而不是一个索引树。

#2


看看分区表就明白了!

#3


up

#4


to  libin_ftsafe(子陌红尘):已经建立了本地索引啊?而且local索引就是建立在分区字段上的!

#5


根据part_name分区的么?

#6


建分区时要指定条件。
插入时会根据特性将数据插入到相应分区。

#7


对了,select * from table_name partition(part_name)这样执行如果你也select * from plan_table看到table access full,那要注意后面的字段pstart和pstop,那里是全扫描的开始分区和结束分区,如果是同一个分区代号,那说明分区全扫描,只有是从1到N才是表的全扫描

#1


索引是本地索引吗?part_name是分区关键字?

分区最主要的两个作用就是高可管理性与可扩展性,并没有说性能的提升。因为大表的分区,我们可以方便的管理一个分区而不至于是整张表,但是,如果不是按照分区条件进行的查询,而索引又是本地索引,查询需要分开到多个本地索引树去扫描而不是一个索引树。

#2


看看分区表就明白了!

#3


up

#4


to  libin_ftsafe(子陌红尘):已经建立了本地索引啊?而且local索引就是建立在分区字段上的!

#5


根据part_name分区的么?

#6


建分区时要指定条件。
插入时会根据特性将数据插入到相应分区。

#7


对了,select * from table_name partition(part_name)这样执行如果你也select * from plan_table看到table access full,那要注意后面的字段pstart和pstop,那里是全扫描的开始分区和结束分区,如果是同一个分区代号,那说明分区全扫描,只有是从1到N才是表的全扫描