select count(*) from 表1 where 列1=@输入值  ....
这个是统计总记录数,现在的问题是,这个非常消耗资源,有没有什么办法知道总记录数,但是又不需要这一步,我现在用的是sql2005,有row_number这个函数,有没有办法利用这个函数或者其他函数来统计数字,就可以避免查询两次(第1次查询总记录,第2次查询top N记录)

解决方案 »

  1.   

    sql server 2000不行,得用两步.oracle可以.
    select * from tb where rownum <= 100如果sql server 2005有row_number
    尝试
    select * from tb where row_number() <= 100
      

  2.   

    select 
    top 1 [rows]=row_number() over(order by 列1)from 
    T
    where 
    条件..
    order by [rows] desc
      

  3.   

    分页存储过程中需要
    1 知道符合条件的总数目    -----select count(*) from 表1 where 条件限制2 取需要的数据,例如第一页取第1到第20条数据   ----各种分页方法就不具体说了在上面的两个过程中,第一步会严重消耗性能我想请问一下大家,有没有不需要知道总数目,也就是不执行第一步的分页存储过程?