在Date & Code上建一个复合索引速度应该会有提高。

解决方案 »

  1.   

    如何加快查询速度1、升级硬件 
    2、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。
    3、扩大服务器的内存
    4、增加服务器CPU个数
    5、对于大的数据库不要设置数据库自动增长,它会降低服务器的性能
    6、在查询Select语句中用Where字句限制返回的行数,避免表扫描,如果返回不必要的数据,浪费了服务器的I/O资源,加重了网络的负担降低性能。如果表很大,在表扫描的期间将表锁住,禁止其他的联接访问表,后果严重。
    7、查询时不要返回不需要的行、列
    8、用select top 100 / 10 Percent 来限制用户返回的行数或者SET ROWCOUNT来限制操作的行
    9、在IN后面值的列表中,将出现最频繁的值放在最前面,出现得最少的放在最后面,减少判断的次数
    10、一般在GROUP BY 个HAVING字句之前就能剔除多余的行,所以尽量不要用它们来做剔除行的工作。他们的执行顺序应该如下最优:
       select的Where字句选择所有合适的行,Group By用来分组个统计行,Having字句用来剔除多余的分组。这样Group By 个Having的开销小,查询快.对于大的数据行进行分组和Having十分消耗资源。如果Group BY的目的不包括计算,只是分组,那么用Distinct更快
    11、一次更新多条记录比分多次更新每次一条快,就是说批处理好
      

  2.   


    这个帖子主要总结提高查询速度的方法,涉及到减少连接数据库次数、建立索引、优化语句等方面。关于索引,推荐转载的这篇文章
    http://blog.csdn.net/dutguoyi/archive/2006/01/10/575617.aspx改善SQL语句的效率
    http://community.csdn.net/Expert/topic/5087/5087396.xml?temp=.345669
    数据量很大怎样加快索检速度
    http://community.csdn.net/Expert/topic/5058/5058320.xml?temp=.1229517
    索引建立方法的区别
    http://community.csdn.net/Expert/topic/5068/5068154.xml?temp=.3010218
    频繁插入删除数据需要更新索引
    http://community.csdn.net/Expert/topic/4937/4937910.xml?temp=.8428614
    测试了一下sql server 2005 全文检索
    http://community.csdn.net/Expert/topic/4878/4878430.xml?temp=.6049311其他关于效率的高频问题判断一个表的数据不在另一个表中最优秀方法?
    http://community.csdn.net/Expert/topic/5038/5038742.xml?temp=.4704553
    删除千万级表中重复记录的办法
    http://community.csdn.net/Expert/topic/5089/5089261.xml?temp=.7907068数据库数据查询变得不正常类型问题大数据量,稳定运行一段时候以后无法得到查询结果。
    http://community.csdn.net/Expert/topic/4810/4810464.xml?temp=9.014529E-02
      

  3.   

    改為循環:
    --這樣用
    set rowcount 100UPDATE [TABLENAME]
    SET FLAG=1
    WHERE DATE='20090101'
      AND CODE='1234' while @@rowcount >0
    UPDATE [TABLENAME]
    SET FLAG=1
    WHERE DATE='20090101'
      AND CODE='1234' 
      

  4.   


    在Date & Code上建一个复合索引速度应该会有提高。再试试
    set rowcount = 300
    /*
     操作
    */
    set rowcount = 0
      

  5.   

    应该不至于吧。现场操作出现超时的概率不小,在公司测试的时候就没有这个问题。而且如果一次将这个表中所有的FLAG字段更新,也不会超时。那么应该不是数据库这块得问题,从现场计算机的网络等等找找原因。
      

  6.   


    SET ROWCOUNT =XXXXUPDATEWHILE @@ROWCOUNT>0
    UPDATE的方法似乎没有查询结束的那一天啊~~~我UPDATE了一个表,16000数据,ROWCOUNT设置为1000结果返回不只16次处理完毕....
      

  7.   

    set rowcount 100UPDATE [TABLENAME]
    SET FLAG=1
    WHERE DATE='20090101'
      AND CODE='1234' AND FLAG!=1while @@rowcount >0
    UPDATE [TABLENAME]
    SET FLAG=1
    WHERE DATE='20090101'
      AND CODE='1234' AND FLAG!=1
      

  8.   

    建议相应的索引
    ========================================
    http://www.dbtuning.cn
    主营:中小企业数据库管理、优化、调校服务
    ========================================