我的办法:xzbh+sjbh+xjbh+yzbh定义为index,rq定义为index,不知大家还有什么好办法???

解决方案 »

  1.   

    create another table to record summary data, monthly update.
      

  2.   

    几个意见:
    1.Varchar改为Char,特别是Varchar(10)以内的.
    2.xzbh+sjbh+xjbh+yzbh定义为index,总的可以,但要注意顺序,我觉得应该是yzbh,xzbh,sjbh,xjbh.
    3.你说的油量合计,我的理解是分"油品编号"合计的,而不是合在一起一个总数,所以应该有ypbh的INDEX,可以单独建一个或者把yzbh,xzbh,sjbh,xjbh改为ypbh,yzbh,xzbh,sjbh,xjbh.以上个人意见,供参考.
      

  3.   

    2.xzbh+sjbh+xjbh+yzbh定义为index,总的可以,但要注意顺序,我觉得应该是yzbh,xzbh,sjbh,xjbh.
    怎么来考虑"顺序"??
      

  4.   

    考虑"顺序"问题,三言两语说不清楚,要结合实际环境,多做试验,试验结果才能确定哪个顺序最好.
    主要考虑:查询在WHERE里用得多的字段一般放前面.
            数据,数据变化多的字段一般放前面.另外要提醒的是:索引只是优化的问题的一部分,索引要和SQL语句优化一起考虑,必要时要考虑服务器的优化.
      

  5.   

    感谢大家的回复!
    to Haiwer(海阔天空):
     你的分析很对,语句中的查询条件有一个时间段(rq>=t1 and rq<t2),有一个油品编号的选择(ypbh in (101,102,103,...)似乎这样效率不高),还有一个油站的选择yzbh in (11001001,11001002,11001003,...)最后还有一个销售类型的选择,条件似乎太多了,
    现在我不知道索引的建立顺序应该怎么排,以上的每一个条件都要用到,头大!!!
      

  6.   

    如果能改程序的话,最好想个办法不要用这么多IN.
    条件多不怕!你的关键不在索引的顺序上,应该在IN上.
      

  7.   

    谢谢Haiwer(海阔天空)老兄!!! 
      

  8.   

    我觉得你的数据库在日期和油站编号(xzbh+sjbh+xjbh+yzbh)这两维数据上建立索引,就应该可以加快速度,另外写点sql语句要最大限度使用索引。
    在in的问题上可以通过建立包含各种数据类型的视图来解决,如果是2000还能建立视图索引。