栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

MySQL:计算行数的最快方法

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL:计算行数的最快方法

当您

COUNT(*)
使用count列索引时,它将是最好的结果。使用 MyISAM 引擎的Mysql
实际上存储行数,每次尝试对所有行进行计数时,它都不会对所有行进行计数。(基于主键的列)

使用PHP计数行不是很聪明,因为您必须将数据从mysql发送到php。当您可以在mysql端实现相同功能时,为什么要这样做呢?

如果

COUNT(*)
速度较慢,则应
EXPLAIN
在查询上运行,并检查是否确实使用了索引以及应将索引添加到何处。


以下不是 最快的 方法,但是在 某些 情况下,这

COUNT(*)
并不完全适合-
在开始对结果进行分组时,您可能会遇到问题,即
COUNT
实际上并没有计算所有行。

解决方法是

SQL_CALC_FOUND_ROWS
。通常在选择行但仍需要知道总行数(例如,用于分页)时使用。选择数据行时,只需
SQL_CALC_FOUND_ROWS
在SELECt之后附加关键字:

SELECT SQL_CALC_FOUND_ROWS [needed fields or *] FROM table LIMIT 20 OFFSET 0;

选择所需的行后,可以通过以下单个查询获取计数:

SELECT FOUND_ROWS();

FOUND_ROWS()
必须在数据选择查询后立即调用。


总之,实际上,一切都取决于您有多少个条目以及WHERe语句中的内容。当有很多行(数万,数百万甚至更多)时,您应该真正注意索引的使用方式。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/394035.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号