create table #test(field1 int,field2 int,field3 varchar(50))
insert into #test select 1,5,'我'
insert into #test select 2,5,'我想'
insert into #test select 3,5,'我想你'
insert into #test select 3,5,'知道我想你吗'select top 1 * from #test where field1<=3 and field2>=3 order by len(field3)  desc;drop table #test1.如上话句,实际只想取一条,请问加上top 1和不加上top 1 在效率上是否有区别?
2.根据实符的长度来排序,是否会大大降低效率?

解决方案 »

  1.   

    1.单用TOP应该没区别
    2.ORDER BY 会降低查询效率
      

  2.   

    1、只想取一条,那么你不用top1那就要用其他方式,还不如用top 1 呢
    2、效率会受到影响的,直接
       select  * from #test where field1<=3 and field2>=3 order by field3 desc;
      

  3.   

    select  * from #test where field1<=3 and field2>=3 order by field3 desc;select  * from #test where field1<=3 and field2>=3 order by len(field3)  desc;第一条比第二条效率高吗?谢谢大家
      

  4.   

    肯定高吧,第二个至少还要先计算len再排序。
      

  5.   

    如果在field3 上有索引,第一条能使用上索引,但第二条不能。