• 经典数据库记录分页代码


    【主题】数据库记录分页经典算法
       
           【方案】
    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语句改为存储过程将会更好。
       
       请大家积极参与讨论分页的算法,并把好的方案与大家分享。
    转自:http://www.cnblogs.com/David-weihw/archive/2007/01/17/622701.html

  • 相关阅读:
    图解SSH隧道功能
    su和sudo命令的用法
    Linux下下载百度网盘资料
    WPS Office 2019 for Linux来了
    Linux下的录屏软件Kazam
    用hdparm获取硬盘参数
    百度,你能不能有点节操?
    locate的基本用法
    Java class不分32位和64位
    Web站点抓取工具webhttrack
  • 原文地址:https://www.cnblogs.com/xlfj521/p/1182060.html
Copyright © 2020-2023  润新知