我对于分区表是一个初学者,请教各位大侠几个问题?
1:对于分区表进行查询时,在SQL语句中指定分区名,与不指定分区名,执行效率是否一致
select * from t_a where a>2 (未指定某个分区名,但查询记录在分区2内)
select * from t_a partition p2 where a>2 (指定的查询数据所在的分区)
当t_a表中的数据量非常多时,其查询效率是否一致
2:分区表的日后维护问题
现在我遇到这样一个问题,有一个大表,我准备建立分区表,其表的记录1年约有1.2亿记录
我准备每个月分一个区(共建十三个分区,一个月一个,另一个用于MAXVALUE),用范围分区法,但过一年后,我没有很好维护方案
我想一年后,对分区表进行调整,有没有什么好的方案
(我只想建十三个分区,而且想把数据保存在当前表中)
先谢谢各位了
1:对于分区表进行查询时,在SQL语句中指定分区名,与不指定分区名,执行效率是否一致
select * from t_a where a>2 (未指定某个分区名,但查询记录在分区2内)
select * from t_a partition p2 where a>2 (指定的查询数据所在的分区)
当t_a表中的数据量非常多时,其查询效率是否一致
2:分区表的日后维护问题
现在我遇到这样一个问题,有一个大表,我准备建立分区表,其表的记录1年约有1.2亿记录
我准备每个月分一个区(共建十三个分区,一个月一个,另一个用于MAXVALUE),用范围分区法,但过一年后,我没有很好维护方案
我想一年后,对分区表进行调整,有没有什么好的方案
(我只想建十三个分区,而且想把数据保存在当前表中)
先谢谢各位了
2 显然你的数据是按时间分区的,那么你明年的数据就无法再存储进前12个分区,只能存到maxvalue分区, 你又想把数据保存到当前表中,岂不自相矛盾,所以只能将之前的12个月数据转移到其他表中,新建12个新一年的分区
select * from table_name where ID=20081009XXXX and month=10;2.根据你的想法,可将分区表按年月分区,按年主分区,按月子分区。
如:
分区1:2008,01
分区2:2008,12
...
分区13:2008,maxvalue
分区14:2009,01
分区15:2009,02
...
分区n:maxvalue,maxvalue
预先创建几年的分区,如果超过年限,可自行手动添加分区。