select item1,item2,item3,item4,item5 from (select top 50 * from Table order by item1 desc) as TempTB  order by item1 asc
select item1,item2,item3,item4,item5 from Table where exsits (select top 50 itme1 from table order by item1 desc) order by item1 asc
我有一些数据,关键字从小到大存放在数据库,我想抽取关键字最大的若干条,并按升序排列显示请问上面两个sql语句那个效率高些呢? 还有没有效率更好的实现方式 ???

解决方案 »

  1.   

    select item1,item2,item3,item4,item5 from (select top 50 * from Table order by item1 desc) as TempTB  order by item1 asc高一些,其实你自己做个测试就知道了。
      

  2.   

    第一种,可以直接利用索引。根据 item1  的索引取出前 50 个。
    第二种,则无直接索引可以利用。(另外你第二种好象实现的也不是这种功能吧,检查一下你的语句)
      

  3.   

    如果对item1建立有索引.第一种快些.
    select item1,item2,item3,item4,item5 from (select top 50 * from Table order by item1 desc) as TempTB  order by item1 asc
    理由就是查询用到了索引.第二种使用了
    exsits,not exists等,用不到索引.
      

  4.   

    如果item不唯一,结果就不一样