关于分页的问题SQL_CALC_FOUND_ROWS

SQL_CALC_FOUND_ROWS 是MySQL中的一个特殊修饰符(modifier),用于执行在应用LIMIT分页限制的同时获取符合条件的总行数,而不仅仅是返回查询结果的部分数据。

通常情况下,当我们使用 LIMIT 条件来限制查询结果的数量时,数据库只会返回满足条件的前N行数据,而不会告诉你总共有多少行符合查询条件。这对于实现分页功能时可能会有问题,因为你无法知道总共有多少行数据,从而无法生成正确的分页导航。

SQL_CALC_FOUND_ROWS 的作用就在于解决这个问题。当在查询中使用了 SQL_CALC_FOUND_ROWS 修饰符时,MySQL会在执行查询时同时计算符合条件的总行数,而不是在返回结果之后再进行额外的查询来计算总行数。

用法示例:

假设有一个名为 t_account 的表,我们要查询其中 deleted='no' 的数据,并使用 LIMIT 来限制结果的数量。如果想同时获取符合条件的总行数,可以这样写

SELECT SQL_CALC_FOUND_ROWS accountid
FROM t_account
WHERE deleted = 'no'
ORDER BY accountid DESC
LIMIT 0, 10;

上述查询将返回满足条件的 accountid 列的前10行数据,并通过执行 SELECT FOUND_ROWS(); 来获取符合条件的总行数。

SELECT FOUND_ROWS();

这个语句将返回之前查询的总行数,而不是实际结果的行数。这样,我们就可以在实现分页导航时,知道总共有多少行数据,从而正确地生成分页链接。

SELECT FOUND_ROWS(); 不会再次查询数据库。当你在查询中使用了 SQL_CALC_FOUND_ROWS 修饰符时,MySQL会在执行原始查询时同时计算符合条件的总行数,并将其存储在内部的状态中。随后,当你执行 SELECT FOUND_ROWS(); 这个语句时,MySQL会从内部状态中获取之前计算得到的总行数,而不会再次查询数据库。

这种处理方式相比于再次执行相同的查询来获取总行数,能够避免额外的数据库开销,提高了查询性能。它特别适用于在实现分页功能时,你可以获取总行数来计算总页数,而无需再次查询获取符合条件的行数。

相关推荐

  1. 关于问题SQL_CALC_FOUND_ROWS

    2023-12-06 00:08:05       37 阅读
  2. 面试——深度问题优化

    2023-12-06 00:08:05       18 阅读
  3. mysql解决深度问题

    2023-12-06 00:08:05       11 阅读
  4. ES问题

    2023-12-06 00:08:05       31 阅读
  5. 常见问题

    2023-12-06 00:08:05       16 阅读
  6. MySQL__深度问题

    2023-12-06 00:08:05       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-06 00:08:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-06 00:08:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-06 00:08:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-06 00:08:05       20 阅读

热门阅读

  1. python日期时间(气象)处理方法(1)

    2023-12-06 00:08:05       29 阅读
  2. jmeter下载地址

    2023-12-06 00:08:05       41 阅读
  3. UI/UX:学习资料

    2023-12-06 00:08:05       38 阅读
  4. Jenkins——节点

    2023-12-06 00:08:05       38 阅读
  5. IT基础监控方案:5台服务器和20台网络设备监控

    2023-12-06 00:08:05       36 阅读
  6. vue3路由的引入和配置

    2023-12-06 00:08:05       37 阅读
  7. 【Spark基础】-- RDD 转 Dataframe 的三种方式

    2023-12-06 00:08:05       33 阅读
  8. 算法---字符串的最大公因子

    2023-12-06 00:08:05       39 阅读
  9. react 字轮播滚动

    2023-12-06 00:08:05       34 阅读