goldnet

导航

Sqlserver 先分页再查询

     当某个表数据量大的时候,假如一页只显示30条,那么在执行数据库的时候就不需要查询所有的数据,再来分页
而是只查询要显示的那一页数据,这样可以大大提高执行效率
    一句通用的Sql语句:
    select top 页大小 * from table1 where fieldname>(select max(fieldname) from  (select top ((页码-1)*页大小) fieldname from table1 order by fieldname  ) as T order by fieldname  
  执行第一页的时候要特殊处理一下,下次写一个通用的存储过程
   create PROCEDURE DataPage
@tblName varchar(255), -- 表名
@fldName varchar(255), -- 排序的字段名
@strGetFields varchar(1000) = ' * ', -- 需要返回的列
@PageSize int = 10, -- 每页有多少条记录
@PageIndex int = 1, -- 第几页
@Count int output, -- 返回记录总数
@OrderType varchar(10)='desc', -- 设置排序类型
@strWhere varchar(1500) = ' 1=1 ' -- 查询条件 (注意: 不要加 where,初始化为1=1使得查询条件永远不为空)

posted on 2008-01-10 10:16  金大侠  阅读(560)  评论(1编辑  收藏  举报