表T 字段:Data,Datetime                         ,   Name             2       2007-01-02   11:01:01       001 
            12     2007-01-02   13:02:01       002 
            21     2007-01-02   15:04:00       001 
            33     2007-01-02   11:01:00       002 求:查询出的结果为: 
              21     2007-01-02   15:04:00       001 
            12     2007-01-02   13:02:01       002 
      也就是找出单人时间最近的一条记录列表,谢谢 大家给我的答案是:
select *
from t tt
where not exists(select 1 from t where tt.name = name and [datetime] > tt.[datetime])但是经过验证发现当数据量很大很大的时候这条语句执行的速度很慢很慢,不知道有没有其它的办法,可以得到这个结果,或者有什么办法可以提高查询速度?
非常感谢大家给我的帮助!

解决方案 »

  1.   

    建立索引(Name,Datetime )再测试
      

  2.   

    建立索引(Name,Datetime )再测试
      

  3.   

    索引是必须的,如果还慢,试下select   * 
    from   t   tt 
    where [datetime]=(select top 1 [datetime] from t where tt.name=name order by [datetime] desc) 
      

  4.   

    这两个字段我之前都建了索引,用你给的
    select   * 
    from   t   tt 
    where [datetime]=(select top 1 [datetime] from t where tt.name=name order by [datetime] desc) 
    速度快多了,谢谢你。
      

  5.   

    >>这两个字段我之前都建了索引,需要建立联合索引(Name,Datetime),字段次序也不要变,这样效果最好