• 【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():则取到了这个纪录
  • 相关阅读:
    终于回来了&&邮递员送信
    发射站
    黑匣子
    利维坦——(1)
    预告
    整除(水题)
    BZOJ054_移动玩具_KEY
    BZOJ4034_树上操作_KEY
    树链剖分学习&BZOJ1036
    BZOJ1208_宠物收养所_KEY
  • 原文地址:https://www.cnblogs.com/ssslinppp/p/6651043.html
Copyright © 2020-2023  润新知