select top 10 * from vw
where Date <
(select top 1 Date from vw where Aid=25 order by Date desc)
 and Bid=(select top 1 Bid from vw where Aid=25) order by Date desc

解决方案 »

  1.   

    优化不了,给你改正下
    select top 10 * from vw
    where Date <
    (select top 1 Date from vw where Aid=25 order by Date desc)
     and Bid=(select top 1 Bid from vw where Aid=25 order by Date desc)
      

  2.   

    谢谢。那个括号是在我给出的那个位置的,最后那个order by Date desc 是相对于select top 10 * from vw
    的。
      

  3.   

    select top 10 * from vw
    where Date <
    (select MAX(Date) from vw where Aid=25)
     and Bid=(select top 1 Bid from vw where Aid=25) 
    order by Date desc
    AID,BID,DATE加上索引试试
      

  4.   

    这个不需要怎么优化
    要不分开写
    declare @date datetime , @id int
    select top 1 @date=Date from vw where Aid=25 order by Date desc
    select top 1 @id=Bid from vw where Aid=25
    exec('select top 10 * from vw where Date < '+@date+' and bid='+@id+' order by Date desc')
      

  5.   

    楼主要学会自己用查询计划分析!
    同时最好了解自动参数化:
    http://blog.csdn.net/downmoon/archive/2010/07/01/5708073.aspx