mysql怎样一次性得到查询的总数和查询的结果,在有limit和offset的情况下

1. 生产环境,绝对不要使用 SQL_CALC_FOUND_ROWS , 效率往往比不上你单独执行2条sql, 因为实质是把这条sql全部执行一遍,获取所有结果集,然后抛弃大部分不需要的数据; 你可以单独select count (id ) ;2. 一般不需要获取总数,如果你是开发一个高性能的程序 ,这是一个开发大忌. 这种耗资源的操作不需要准确,也不需要频繁执行.
■网友
似乎不可以,总数只能count出来,如果是用jdbc的话,有个偷懒的方法,似乎使用 scrollable resultset。
■网友
如果,有人看到了这条回答,一定不要用 SQL_CALC_FOUND_ROWS,FOUND_ROWS()!!!除非你的查询是放在存储过程中(来自一个踩坑中的菜鸡)
以下是示例伪代码
public Page\u0026lt;xxx\u0026gt; void testA(){ SELECT SQL_CALC_FOUND_ROWS * FROM A; SELECT FOUND_ROWS();}public Page\u0026lt;xxx\u0026gt; void testB(){ SELECT SQL_CALC_FOUND_ROWS * FROM B; SELECT FOUND_ROWS();}当并发上来之后,会变成
SELECT SQL_CALC_FOUND_ROWS * FROM A;SELECT SQL_CALC_FOUND_ROWS * FROM B ;SELECT FOUND_ROWS();SELECT FOUND_ROWS(); 【mysql怎样一次性得到查询的总数和查询的结果,在有limit和offset的情况下】 特别说明:当 上一条 查询语句没有使用SQL_CALC_FOUND_ROWS是,FOUND_ROWS()返回上一条查询的返回行数

■网友
SELECT SQL_CALC_FOUND_ROWS goods WHERE k=\u0026#39;avs\u0026#39; LIMIT 10;SELECT FOUND_ROWS();这虽然是两个sql语句,但是确是查询一次数据库,效率明显提高了一半!其中SQL_CALC_FOUND_ROWS 告诉Mysql将sql所处理的行数记录下来,FOUND_ROWS() 则取到了这个纪录。
■网友
我的表12万数据,用了sql_calc_found_rows,就提示错误,用的SAE


    推荐阅读