例如,国内某大型保险公司,其有36家分公司,一年的保单明细表(f_policy)大概有2亿条记录,两年的数据超过4亿条,如果在f_policy上作一次查询,响应非常慢,可以考虑将f_policy按照机构拆分为36个同构的小表,在作整个保单明细表的查询时,可以使用union all操作合并数据,或者建立一个union all的视图,查询效率大大提高。并且,作这样的拆分非常有用,因为经常会有只查询某个分公司数据的需求。
例如上面我应该在不改变原来程序的情况下,如何进行更改查询方法,从查询一张表到一次性联合查询多张表?
那位大侠能指点一下

解决方案 »

  1.   

    把多个表union all 起来当作一个子查询来做.
      

  2.   

    应该怎么写查询语句?给个例子
    如三个表tab1 tab2 tab3
      

  3.   

    select * from 
    (select x1,x2,x3 from tab1
    union all 
    select x1,x2,x3 from tab2
    union all 
    select x1,x2,x3 from tab3) tt
      

  4.   

    --假设三表结构一样.
    select * from
    (
    select * from tab1 
    union all
    select * from tab2 
    union all
    select * from tab3 
    ) t