zoukankan      html  css  js  c++  java
  • MySQL分页时统计总记录行数并使用limit返回固定数目的记录

      需求很简单:假设有一个user表,表中实际上有10000条数据,但是我不知道有多少条,我要从数据库中每次取20条数据显示,那么怎么完成呢?

      方案一:

        首先执行一个

    select count(*) as total  from user;  

        上面SQL语句会查出总的记录条数。另外一点,可能这里不只是无条件的查,如果是有条件的查,那么可以使用临时表

    select count(*) from user where id>10;
    或者
    select count(*) from (select id,name from user) as temp;
    

         总的记录条数求出了之后,于是可以使用limit只取一部分数据了:

    select * from user limit start,offset;
    

        其实上面的做法完全没有问题,但是我有一个疑问,这里的例子只是从一个表进行操作,而且还是很简单的操作,如果要进行很复杂的连接、分组、去重,如果进行计算的几个表的数据量很大的时候,那么就意味着上面的操作很冗余:

        一次是执行完整的操作,然后只取得总的记录条数;

        一次是执行完整的操作,然后只取得从start之后的offset条数据。

        其实这两次操作的第一步是重合的,那么我就在想能不能只进行一次操作(比如几个表之间的连接、分组、去重等操作),然后又可以获得总的记录条数,又能只取start之后offset条数据

        

      方案二:

  • 相关阅读:
    java中的静态代理、jdk动态代理和cglib动态代理
    第三方支付熟悉
    C#进制转换
    维翔主机asp主机使用遇到的问题及解决方案总结
    windows上JSP开发环境全搭建
    文件校验工具的开发及问题
    C#加密算法总结
    WampServer搭建php环境可能遇到的问题
    分分钟搭建自己的微信聊天机器人
    KindEditor编辑器在ASP.NET中的使用
  • 原文地址:https://www.cnblogs.com/-beyond/p/8663589.html
Copyright © 2011-2022 走看看