我这有个表record,有600多万记录了,查询和更新都比较慢。所以,我想把这个表按月份分成N多个小的表,像record200901、200902、200903等等等,分是分出来了,但每个月都会生成新的表,怎么来建个视图来显示整个record表呢?

解决方案 »

  1.   

    每月做一个作业计划就可以了,查询系统表 like 'record2009%' 的所有表 ,拼成一个字符串union all
      

  2.   

    CREATE VIEW RECORD_VIEW 
    AS
    SELECT * FROM record200901
    UNION ALL
    SELECT * FROM record200902
    --UNION ALL
    --...
      

  3.   

    用动态SQL吗?
    意思就是到当前月份为止?
    参考如下怎么获取所有月份,然后动态组合你的SQL语句.
    declare @dt1 as datetime
    declare @dt2 as datetime
    set @dt1 = '2008-01-01'
    set @dt2 = getdate()select 
        convert(varchar(6),dateadd(mm,num,@dt1),112) dt
    from 
        (select isnull((select count(1) from sysobjects where id<t.id),0) as num from sysobjects t) a
    where
        convert(varchar(6),dateadd(mm,num,@dt1),112)<=convert(varchar(6),@dt2,112)
    order by dt/*
    dt     
    ------ 
    200801
    200802
    200803
    200804
    200805
    200806
    200807
    200808
    200809
    200810
    200811
    200812
    200901
    200902
    200903
    200904
    200905
    200906
    200907
    200908
    200909
    200910
    200911
    200912
    201001
    201002
    201003
    201004
    201005
    201006
    201007
    201008
    201009
    201010
    201011
    201012(所影响的行数为 36 行)*/
      

  4.   

    我想分出来还有另外一个意义,就是大量的insert都在一个非常小的表里,这样会比较快一点。