1、应该采用单表还是多表?
单表还是多表主要看业务需要,如果只有8个子段,相互间的关系应该不会很复杂,应该能确定是否需要分表,楼主没有说明关系,我们就不好说明单表还是多表了。2、为使查询速度最快,应该如何设计数据库中的表?
这个问题的回答应该在第一个问题答案的基础上。
一般来说,所谓设计数据库中的表包括表的结构、表的存储、索引的设计等,这三个都是和查询速度密切相关的。
设计数据库中的表还要考虑你的应用的类型,是联机事务处理OLTP(on-line transaction processing)还是联机分析处理OLAP(On-Line Analytical Processing),简单点说就是你的表的数据需不需要增删改。
不明白为什么还没设计好就能知道“其中有四个索引”。

解决方案 »

  1.   

    如果是单表,select的时候,是正张表装入内存吗? 内存装得下吗?
      

  2.   

    最重要的是要有主鍵,沒有主鍵的數據表查詢速度會慢很多,
    500萬條記錄如果都是同一類型的話肯定用單表,
    如果有單據頭,單據體,那麼最好分開,
    否則會造成你的數據表冗余數據過多,最終查詢速度變慢,而且佔用資源過多。
    盡量少用大字段如(text或ntext、或者多個上了1000以上的字段),字段能小則小。
    索引盡量不要用多個,應該用在確實需要建索引的字段上,索引多了隻會更慢,在精不在多。查詢時不可能是把整張表裝入內存再查,而是符合條件的才裝入內存,
    但是結果集太大的話,也會進行緩沖處理。
      

  3.   

    主键的定位非常关键,它是簇索引,建议尽量减少全表扫描,如服务器非常差,可以把数据放到几个表中,如10个表中,查询的SQL语句不长变的话,建议用存储过程
      

  4.   

    记录数达500万条,每条记录有8个子段,其中有四个索引。
    问题:
    1、应该采用单表还是多表?
    2、为使查询速度最快,应该如何设计数据库中的表?
    -----------------------------------------------------------------------------------
    1、有条件,当然建议分区,并且将分区之后的各个表分布在不同的物理磁盘上以提高并行I/O的效率。
       另外使用RAID 10的阵列可以获取最优的磁盘读写性能。2、将查询中经常使用的字段和不经常使用的字段分别存放在不同的表中,通过主外键关联,然后就是索引的建立和优化以及查询的优化。
      

  5.   

    记录数达500万条,每条记录有8个子段这个数据量也不是很大,把物理硬件提高点应该差不多了!像上面说的磁盘的读写方面,数据传输方面,内存,CPU处理等方面下点功夫应该没问题的!