现有一张大型表A,常用数据为近1年的数据,历史数据访问概率较低,但也需要用来作为参考数据。现考虑将表A分为两张表,一张活跃表t_Active,一张老化数据表t_Archive。采用滑动窗口方案,t_Active只保存最近12个月的数据,t_Archive保存除此之外的历史数据。两张表都按时间分区,使用相同的分区函数和文件组,文件由于磁盘限制存放在同一磁盘。
最后通过一个视图将两张表联合起来,两张表都建立了相应的CHECK约束,用户通过查询这个视图来访问所有数据。但是通过测试发现,查询效率并没有得到提高,与采用滑动窗口方案前差不多。请问各位大侠是为什么呢?是滑动窗口应用的不正确,或者有什么其他更好的解决方案。THX~~

解决方案 »

  1.   


    我的想法是,在查询时根据分区键来判定是落在视图的哪张基础表,只会落在t_Active和t_Archive中一张表中,而不是查询以前的打表。
      

  2.   


    因为t_Archive和t_Active表都是还是查询系统所需要的,只是t_Archive表被查询的频率要小很多,如果只查询t_Active表的话,就无法引用历史数据了
      

  3.   

    建议您看看这篇文章,写的不错:
    SQL Server 2005 中处理表分区问题(分区表性能和分区切换)
      

  4.   

    补充一个问题,如何移动数据库分区文件呢?刚才试着将已填充数据的分区文件移动到另外一张磁盘,移动完毕,重启SQL Server示例,发现数据库不可用,查询sys.databases显示该数据库状态为RECOVERY_PENDING。不知如何移动数据库文件才是正确的。
      

  5.   

    用视图
    表里面的索引就无效了
    可以这样 select * from t_Active where +条件
     union all 
     select *  from t_Archive where +条件
      

  6.   

    可以不用分成两个表
    用SQL 2008的表分区
      

  7.   

    t_Active和t_Archive两张表都已经进行了分区。