目前服务器的SQL的数据量为40G,内存也升级到了4G还是出现SQL查询很慢的情况,请教一下,我现在应该怎样优化SQL???

解决方案 »

  1.   

    截断表,建立年库,把数据转移
    索引重建,SQL运行时间长了索引会有失效现象,重新建立
    优化SQL语句的执行效率
    扩充CPU
      

  2.   

    补充一下,通常来说业务主表的数据量不能超过100万条,否则性能急剧下降,要建立一个年表,把历史数据转到年表,用视图连接。
    年表的数据量太大的时候就要按年份截断,把数据迁移到后备的数据库去如果业务数据量实在太大,建议还是用小型机+ORACLE,40G的数据是很庞大了,我们的数据如果不截断也有那么大,截断后在20多G磁盘性能也很重要,另外要注意下SQL被分配的内存,通常系统不会默认把大部分内存分配给SQL使用的(2G左右),如果你服务器只是用来跑SQL就可以分配3.5G左右过去
      

  3.   

    最简单的方法是做个历史表,分区数据表有点麻烦。
    补充一下,内存超过2GB,可以设置让SQL Server 2000访问更多物理内存。
    boot.ini
    [boot loader]
    timeout=30
    default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
    [operating systems]
    multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /fastdetect /PAE
      

  4.   

    40G也不算特别大。优化索引+RAID5(0+1),应该可以解决。我的公司的数据库已经超过60G了
      

  5.   

    比方说复杂查询,可以考虑不在数据库端实现,分配计算量到客户端比方说报表类型、统计分析等计算工作交到数据层,而不是数据库层实现,或者干脆由客户端计算。复杂分析、多表JOIN等,尽量少做,甚至分配到数据层自己组装
      

  6.   

    用分区视图,对sql语句有影响。