现有一张大型表A,常用数据为近1年的数据,历史数据访问概率较低,但也需要用来作为参考数据。现考虑将表A分为两张表,一张活跃表t_Active,一张老化数据表t_Archive。采用滑动窗口方案,t_Active只保存最近12个月的数据,t_Archive保存除此之外的历史数据。两张表都按时间分区,使用相同的分区函数和文件组,文件由于磁盘限制存放在同一磁盘。
最后通过一个视图将两张表联合起来,两张表都建立了相应的CHECK约束,用户通过查询这个视图来访问所有数据。但是通过测试发现,查询效率并没有得到提高,与采用滑动窗口方案前差不多。请问各位大侠是为什么呢?是滑动窗口应用的不正确,或者有什么其他更好的解决方案。THX~~
最后通过一个视图将两张表联合起来,两张表都建立了相应的CHECK约束,用户通过查询这个视图来访问所有数据。但是通过测试发现,查询效率并没有得到提高,与采用滑动窗口方案前差不多。请问各位大侠是为什么呢?是滑动窗口应用的不正确,或者有什么其他更好的解决方案。THX~~
我的想法是,在查询时根据分区键来判定是落在视图的哪张基础表,只会落在t_Active和t_Archive中一张表中,而不是查询以前的打表。
因为t_Archive和t_Active表都是还是查询系统所需要的,只是t_Archive表被查询的频率要小很多,如果只查询t_Active表的话,就无法引用历史数据了
SQL Server 2005 中处理表分区问题(分区表性能和分区切换)
表里面的索引就无效了
可以这样 select * from t_Active where +条件
union all
select * from t_Archive where +条件
用SQL 2008的表分区