当某个表数据量大的时候,假如一页只显示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使得查询条件永远不为空)