让where条件中粒度大的走索引,和顶楼的意思差不多,应该可以提高效率。

解决方案 »

  1.   

    两个之间不要用between,用<= and >=
      

  2.   

    to alphazhao(绿色咖啡 and  superjj2002(我真的很菜!) AND playmud(观望~淡漠~孤傲)
      我们已经把起始号码作为索引了,但因为数据量很大,所以才想问问各位还有没有另外的一些方法,类似这个的问题曾经造成我们主机的当机,后来我们采用的方法就是我说的那种。这种虽然可能对系统压力比较大,效率不是很高,但他是分散的,在一定时间段里对系统的压力没那么大,不知各位有何见教。TO  playmud(观望~淡漠~孤傲)
    你说的两个之间不要用between,用<= and >=
    是不是就是我那种写法?另外我好象记得 BETWEEN 比 <= and >=
    执行的效率高TO 能否考虑使用内存数据库技术?
    你说的内存数据库技术我不太了解,能多讲讲吗,或给我点这方面的资料,谢谢。
    我们用的是DB2。谢谢大家的指教!
      

  3.   

    如果是多CPU,我想应该速度比较快的,看是不是从物理上和CPU上进行优化
      

  4.   

    BETWEEN 和 <= and >= 的效率应该是差不多的.
      

  5.   

    TO billik(billik) (  ) 
    我们用的大机
    TO  erickleung
    其他条件都写在前面了也都是索引,但没有把所有条件都为索引,我还想问一下大家如果在另一个表中,记的也是这样的内容,但一个号码只有一条记录,如果给定一个号码,如何写这个语句效率会比较高,我是这样写的:
    select (要查出的item) from table where 
    (其他条件) and (202 between(起始号,终止号)) 
    optimize for one row
      

  6.   

    给几个建议,不一定管用:
    1。建立个索引,在sql语句的from <表名>后加上(index 〈索引名〉) 则将此索引帮定在这个查询语句上。
    2。将这张表帮定一个内存cash,会提高速度。
    3。我建议不要走视图,因为视图生成是会不走索引,影响速度。
    4。where条件的顺序也比较重要,应该按照索引建立的顺序排列。
      

  7.   

    应该注意建立复合索引
    但是千万注意:一个表的查询
    索引只会使用一个
    千万注意啊,一定要注意使用的那个给你个简单例子:
    比如:select * from table where a = 4 and b+0 = 10;假设a和b上都有索引,你期望使用索引a
    因为b+0的缘故,只选择a上的索引
    不然,很可能选择b的  :)