可以通过如下方法来优化查询 :
1、把数据、日志、索引放到不同的I/O设备上,增加读取速度。数据量越大,提高I/O越重要.
2、升级硬件
3、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。索引应该尽量小,使用字节数小的列建索引好,不要对有限的几个值的字段建单一索引如性别字段
4、提高网速;
6、扩大服务器的内存,Windows 2000和SQL server 2000能支持4-8G的内存。
配置虚拟内存:
虚拟内存大小应基于计算机上并发运行的服务进行配置。运行SQLServer2000时,可考虑将虚拟内存大小设置为计算机中安装的物理内存的 1.5 倍。
7、增加服务器CPU个数;但是必须明白并行处理串行处理更需要资源例如内存。
8、如果是使用like进行查询的话,简单的使用index是不行的,但是全文索引,耗空间。
like 'a%' 使用索引
like '%a' 不使用索引
用 like '%a%' 查询时,查询耗时和字段值总长度成正比,所以不能用CHAR类型,而是VARCHAR。对于字段的值很长的建全文索引。
9、DB Server 和APPLication Server 分离
10、重建索引 DBCC REINDEX ,DBCC INDEXDEFRAG,收缩数据和日志 DBCC SHRINKDB,DBCC SHRINKFILE.
设置自动收缩日志.对于大的数据库不要设置数据库自动增长,它会降低服务器的性能。

解决方案 »

  1.   

    我来签个名
    laughsmile(海边的星空)是高人哈,尤其是db方面tomcat里不知道能不能做缓冲,如果能的话也可以试下
      

  2.   

    我做过的一个系统 因为当时没有考虑到这些(以前做的 考虑不周),但是现在突然要面对这个严峻的问题 想知道的是 建立索引的方法 对于我原有的程序代码改动的多不多,是否我的sql语句之类的都需要重写 以前没研究过这类的问题 所以问得可能有点弱智,希望各位能指点迷津,在此谢过了 :)
      

  3.   

    一般,这个问题你应该去db版问java这里,我提个建议,使用像os cache这样的东西来缓存你的查询结果
      

  4.   

    对以下列考虑建索引:    
    1  包含大量非重复值的列。  
    2  使用下列运算符返回一个范围值的查询:BETWEEN、>、>=、<  和  <=。  
    3  被连续访问的列。  
    4  返回大型结果集的查询。  
    5  经常被使用联接或  GROUP  BY ,order by 子句的查询访问的列.不适用于建索引的列:    
    1  频繁更改的列 
    2  有大量的重复值的列说明:主键已经默认建了索引
    建索引的语法:
    CREATE INDEX index_name ON tablename (column1Name, ...,columnnName)