我用的是SQL2005,其中有一个表是存放分类数据的,有几十万个分类(每天都要增加),每个分类大概有几百个数据(每天也在增加),这个表的数据量太大了,目前已经有5千多万的数据,读写都比较耗资源。
现在我想把这个表拆分成几十万个表,这样的读写会不会比较省资源,这样对其他的表的读写的影响大不大呢,就不知道几十万个表中找一个表的消耗大不大?请各位大侠指点指点

解决方案 »

  1.   

    我的表的结构如下:
    字段:分类ID(SID),关联内容(KEYWOED)
            1              A2
            1              B3
            1              C6
            1              D1
            2              F4
            2              G2
            2              S4
    ....
    现在想把这个表拆分成n个表,以分类ID为表名(t1,t2....),不知道这样的性能好还是不好
      

  2.   

    几十万个表你怎么读取 全都union?
      

  3.   

    5kw条,分区实现,也就分100个表差不多了
    至于分几十万个吗?这样可能效率真的会低
    如果自己分、管理,基本不可行【我的表的结构如下: 
    字段:分类ID(SID),关联内容(KEYWOED) 
            1              A2 
            1              B3 
            1              C6 
            1              D1 
            2              F4 
            2              G2 
            2              S4 
    .... 】
    以keywork为分区依据,也就26x10=260个表嘛
      

  4.   

    哦,如果是从sid开始查的,则可以按sid % 100作为分区依据,也就100个表嘛
      

  5.   

    Oracle没有问题 ,不知SQl server2005行不行
      

  6.   

    这样做不可行。
    排除数据库的维护来说,设计几十万个同样的表没有任何意义。SQL2005有分区表,但是感觉分区表的对你的5KW的数据来说,作用不大。个人觉得还是得稍微修改下。类似于用友那种模式(一年一个库),但是楼主可以不用一年一个库,
    根据具体需要来分。还有一种分发:可以把具有相似特性的所有分类放在一个表里。这样也是一种比较好的方法。
      

  7.   

    非常不好,有很多坏处。肯定不如放一个表上。表名不固定的话要用动态sql,这部分编译速度也会有点影响。
    如果是用union all视图的话,这个可能吗?分100个感觉就够了,还有看看主键聚集索引在什么地方,增删改查的语句是什么?