asp.net下经典数据库记录分页代码
2007-04-28 00:00
756 查看
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语句改为存储过程将会更好。
请大家积极参与讨论分页的算法,并把好的方案与大家分享。
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语句改为存储过程将会更好。
请大家积极参与讨论分页的算法,并把好的方案与大家分享。
相关文章推荐
- asp.net下经典数据库记录分页代码
- asp中通过getrows实现数据库记录分页的一段代码
- 在asp中通过getrows实现数据库记录分页的一段代码
- 在asp中通过getrows实现数据库记录分页的一段代码
- 经典数据库记录分页代码
- 经典数据库记录分页代码
- 经典数据库记录分页代码
- asp中通过getrows实现数据库记录分页的一段代码
- ASP.NET操作数据库经典代码
- asp.net 记录一下教常用的代码吧 记忆力太差了
- [转]SqlSever2005 一千万条以上记录分页数据库优化经验总结【索引优化 + 代码优化】一周搞定
- 常用的在数据库中建立无限级树形菜单的asp.net代码
- asp.net的分页代码 (不是分页控件)
- C#和asp.net中链接数据库中参数的几种传递方法实例代码
- asp.net repeater手写分页实例代码
- 一个比较好的Asp.net的分页代码,检索速度很快!
- asp.net 数据库连接类代码(SQL)
- ASP.NET生成静态页面和分页代码
- asp.net中一个linq分页实现代码