当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 初学者必读:经典的数据库记录分页代码

MSSQL
SQL server 随机数函数
SQLServer Top语句参数化方法
SQLServer EVENTDATA()函数来获取DDL 触发器信息
sql server 常用的几个数据类型
SQL Server 排序函数 ROW_NUMBER和RANK 用法总结
数据库Left join , Right Join, Inner Join 的相关内容,非常实用
MySql 安装时的1045错误
SQL Server 中查看SQL句子执行所用的时间
模糊查询的通用存储过程
sql 查询慢的原因分析
SQL Server 数据库优化
数据库 日期加减处理
sql 触发器使用例子
sql 刷新视图
提升SQL Server速度 整理索引碎片
恢复.mdf 数据库步骤
Sql 批量替换所有表中内容
Sql 批量查看字符所在的表及字段
SQLServer XML数据的五种基本操作
SQL Server使用Merge语句当源表数据集为空时,无法进行查询的问题

MSSQL 中的 初学者必读:经典的数据库记录分页代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 133 ::
收藏到网摘: n/a

方案:

◆1、SELECT TOP PAGESIZE NEWSTITLE

FORM NEWSINFO WHERE NEWSID NOT IN

(SELECT TOP (PAGE-1)* PAGESIZE NEWSID FROM NEWSINFO

WHERE Auditing=1 and NEWSBREED='企业新闻' order by NEWSID DESC)

AND Auditing=1 and NEWSBREED='企业新闻' order by NEWSID DESC

其中:PAGE表示当前页数,PAGESIZE表示页的大小;这里利用了NOT IN,不复合SARG,但总比一次读取全部的记录要好的多。

◆2、符合 SARG的代码

针对本人的实例还有一个更好的方案:因为NEWSID字段是自增字段,对于NOT IN 语句进行如下的改造,并不影响结果。但速度提高了很多

SELECT TOP PAGESIZE NEWSTITLE

FORM NEWSINFO WHERE NEWSID <

(SELECT MIN(NEWSID) FROM (SELECT TOP (PAGE-1) * PAGESIZE NEWSID FROM NEWSINFO WHERE Auditing=1 and NEWSBREED='企业新闻' order by NEWSID DESC) AS TB)AND Auditing=1 and NEWSBREED='企业新闻' order by NEWSID DESC

说明

对于在多处使用分页功能的web 应用程序,把SQL语句改为存储过程将会更好。