zoukankan      html  css  js  c++  java
  • 经典数据库记录分页代码

    【主题】数据库记录分页经典算法
       
           【方案】
    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

  • 相关阅读:
    从头到尾彻底解析Hash表算法
    postgres模糊匹配大杀器
    postgres数据库表空间收缩之pg_squeeze,pg_repack
    pgcli安装
    pg_waldump的使用
    数据库表空间收缩之pg_squeeze,pg_repack
    数据库fillfactor
    pgbouncer连接池
    mysql-选择使用Repeatable read的原因
    postgresql-锁相关
  • 原文地址:https://www.cnblogs.com/xlfj521/p/1182060.html
Copyright © 2011-2022 走看看