程序这段时间非常慢,调式了下,在执行sql语句的时候时间比较久,但是我的sql语句就是两个表的查询,条件中有个like,然后还有一个order by排序,返回10列  1行。局域网,服务器为老式普通电脑,客户端也为老式普通电脑,内存1g左右,cpu主频在1.8-2.0之间 。请给位大侠指点,为什么会这么慢呢。

解决方案 »

  1.   

    先把like匹配的值取出来放到一边,然后再排序试试
      

  2.   

    硬件都挺老式的了。sql需要优化?
      

  3.   

    select a.t1,a.t3,a.t4,a.t5,b.t6,b.t7,a.t8,a.t9,a.t10 from a1,b1 where b.t2 like '%" & str & "%' b.t2=a.t1 order by a.t1  这是我的sql语句
      

  4.   


    select a.t1,a.t3,a.t4,a.t5,b.t6,b.t7,a.t8,a.t9,a.t10 from a1 a,b1 b where a.t1=b.t2 and b.t2 like '%str%' order by a.t1;或者select a.t1,a.t3,a.t4,a.t5,b.t6,b.t7,a.t8,a.t9,a.t10 into #Temp from a1 a,b1 b where a.t1=b.t2 and b.t2 like '%str%';
    select * from #Temp order by t1
      

  5.   


    select a.t1,a.t3,a.t4,a.t5,b.t6,b.t7,a.t8,a.t9,a.t10 from a1 a,b1 b where a.t1=b.t2 and b.t2 like '%str%' order by a.t1;或者select a.t1,a.t3,a.t4,a.t5,b.t6,b.t7,a.t8,a.t9,a.t10 into #Temp from a1 a,b1 b where a.t1=b.t2 and b.t2 like '%str%';
    select * from #Temp order by t1
      

  6.   

    但有个界面是单独查询a1表的,速度就比较正常,
    select t1,t3,t4,t5,t8,t9,t10 from a1 where a.t1 like '%" & str & "%' order by t1 oder by t1
    一直没明白是咋回事儿。
      

  7.   

    我在本机上测试过了where b.t2 like '%" & str & "%' and b.t2=a.t1 要比where  b.t2=a.t1 and b.t2 like '%" & str & "%' 快
      

  8.   


    所以先取数据再关联
    这样应该是最快的。select a.t1,a.t3,a.t4,a.t5,a.t8,a.t9,a.t10 into #Temp 
    from a1 a where a.t1 like '%str%';
    a.t1,a.t3,a.t4,a.t5,b.t6,b.t7,a.t8,a.t9,a.t10 
    from #temp a,b1 b 
    where a.a1=b.b2 order by a.t1;
      

  9.   

    硬件本来就跟不上了
    说不定是查询时
    内存 cpu都跟不上
      

  10.   

    你可以看看执行计划,应该order by占的时间最多,基次是index,除了建索引,我觉得也没什么可优化的。
      

  11.   

    那个是不对的,微软数据库在执行查询语句的时候是最先执行from后面的表关联,而select后面要查的字段是最后才执行的!