请问数据库的高手们,如下情况应该如何处理:
    有一个表,数据可能会上千万条,我应该将所有的数据存在一个表中,还是建多个结构相同的表将数据分开存储呀?哪种方式数据的查询速度更快呢?希望高手们给予指点。

解决方案 »

  1.   

    那要看你做什么样子的查询了。
    如果是该数据表仅仅是做日志LOG,很少有机回做大量数量的统计查询的话,建议使用多个表(每月一张,或是数据量更大,每天),我们做过的机场报文信息记录系统就是采用这种模式。
    如果系统要做频繁的检索、查询,并且有是大跨度的,现在也没有很好的解决方式,有一种办法就是仍然采用上面的方式,不过查询起来就比较麻烦,建立一个UNION视图,做好查询优化,并做个batch在添加新表后更新视图。
    如果数据量虽然大,但查询时的跨度并不大,可以采用一张表,该表独占一个tablespace,这个tablespace采用多个数据文件,平时只挂近期用到的数据文件,做大跨度查询时,才把需要的数据文件挂上。可能稍微好一点。
      

  2.   

    多谢sinosolo(solo)的建议!下面我再将问题阐述得更清楚些,希望您能给进一步的建议:
          (1)若分开成多表,我们目前需要Union视图查询的情况很少,一般只查询一张表就可以了。
          (2)但按照目前的设计,一下子可能会生成几百张表,表的数目很多,但每张表中的数据比较少。
          (3)目前主要是考虑长时间的数据积累后出现大量数据的情况,短时间内数据不会很多。
          我自己的想法是把所有数据放在放在一张表中,建好索引。这样数据的查询速度比多张表的查询应该不会差很多吧。
           请sinosolo(solo)指点!
      

  3.   

    那就用一张表,多个数据文件或是多个tablespace的方式,定期把老数据(老的数据文件)下了就行。需要查的时候再挂上。
      

  4.   

    http://www.acms.com.cn/news/11/2005-10-29_28343.html
      

  5.   

    http://www.acms.com.cn/news/11/2005-10-29_23842.html