zoukankan      html  css  js  c++  java
  • 【Mysql】MySQL高效获取记录总数SQL_CALC_FOUND_ROWS

    用法说明

    分页程序一般由两条SQL组成:

    SELECT COUNT(*) FROM ... WHERE ....
    SELECT ... FROM ... WHERE LIMIT ...
    

    如果使用SQL_CALC_FOUND_ROWS的话,一条SQL就可以了:

    SELECT SQL_CALC_FOUND_ROWS ... FROM ... WHERE LIMIT ...
    

    在得到数据后,通过FOUND_ROWS()可以得到不带LIMIT的结果数:

    SELECT FOUND_ROWS()
    

    示例

    常规分页查询:

    //获取总数
    SELECT COUNT(*) FROM users WHERE k='avs';
    //获取当前页记录
    SELECT id FROM goods WHERE k='avs' LIMIT 10;
    

    使用 SQL_CALC_FOUND_ROWS 和 FOUND_ROWS()方式

    SELECT SQL_CALC_FOUND_ROWS goods WHERE k='avs' LIMIT 10; 
    SELECT FOUND_ROWS();  //获取总数
    

    这虽然是两个sql语句,但是确是查询一次数据库,效率明显提高了一半!

    • SQL_CALC_FOUND_ROWS:告诉Mysql将sql所处理的行数记录下来,
    • FOUND_ROWS():则取到了这个纪录
  • 相关阅读:
    LeetCode 48 Anagrams
    大数据实时处理:百分点实时计算架构和算法
    Kafka操作
    Kafka
    批量扫描互联网无线路由设备telnet,并获取WIFI密码
    WMI
    openvas
    原始套接字
    Zabbix
    MySQL exist
  • 原文地址:https://www.cnblogs.com/ssslinppp/p/6651043.html
Copyright © 2011-2022 走看看