select product.productId, sum(isnull(putin.amount,0))
from c_product product
inner join p_purchase purchase on product.productid = purchase.productid
inner join p_putinstorage putin on putin.purchaseid = purchase.purchaseid  
where putin.state = 3
group by prod.productId
这样一段很简单的查询,我的数据量才在1W条多点,需要25秒才能查询出来
请问大家怎么能优化一下?

解决方案 »

  1.   

    不知道是否加索引了,比如ProductID,Purchaseid,另外,可以查看一下执行计划,看看哪块时间较长,再有针对性的优化
      

  2.   

    p_purchase 表刚过1W条
    p_putinstorage 1W5 条
    product表才 30条
    查询25秒,我也觉得很奇怪
      

  3.   

    胡辉:13028803715   0755-82945017 9、深圳microsoft Windows 2003 Server报价 中文标准版5用户 4100
        10、深圳microsoft Windws 2003 Server报价 中文企业版25用户 20500
        11、深圳microsoft Windows 2008 Server报价 中文标准版5用户 5800
        12、深圳microsoft Windows 20008 Server 中文企业版25用户 22000
        13、深圳microsoft SQL 数据库 工作组版 10用户 开放式许可 12900
        14、深圳microsoft SQL数据库报价 标准版 15用户 开放式许可 29000
        深圳microsoft SQL server 2008报价 中文标准版15用户彩包 33300 
      

  4.   

    原因很多:
    1.内存,sql server内存设置过小,造成频繁与磁盘交互
    2.首次查询,需要读取硬盘
    3.字段索引解决办法:
    增加sql 内存,查看查询计划,找出成本最高的部分,有计划的创建索引,降低开销