php - 如何在 PHP 中使用 MySQL Found_Rows()?

标签 php mysql sql-calc-found-rows

由于性能问题,我尽量避免使用 Count()。 (即 SELECT COUNT() FROM Users)

如果我在 phpMyAdmin 中运行以下命令,就可以了:

  SELECT SQL_CALC_FOUND_ROWS * FROM Users;
  SELECT FOUND_ROWS();

它将返回行数。即用户数。

但是,如果我在 PHP 中运行,我不能这样做:

  $query = 'SELECT SQL_CALC_FOUND_ROWS * FROM Users;
    SELECT FOUND_ROWS(); ';
  mysql_query($query);

似乎 PHP 不喜欢传入两个查询。那么,我该怎么做呢?

最佳答案

SQL_CALC_FOUND_ROWS 仅在您使用 LIMIT 子句时有用,但仍想知道在没有 LIMIT< 的情况下会找到多少行.

想想这是如何工作的:

SELECT SQL_CALC_FOUND_ROWS * FROM Users;

您强制数据库检索/解析表中的所有数据,然后将其丢弃。即使您不打算检索任何行,数据库服务器仍会在假设您需要该数据的情况下开始从磁盘中提取实际数据。

用人类的话说,你买了 super 杂货店的所有东西,但扔掉了除了收银台上的一包口香糖之外的所有东西。

鉴于,正在做:

SELECT count(*) FROM users;

让数据库引擎知道,虽然您想知道有多少行,但您并不关心实际数据。在大多数智能 DBMS 上,引擎可以从表的元数据中检索此计数,或者简单地遍历表的主键索引,而无需触及磁盘上的行数据。

关于php - 如何在 PHP 中使用 MySQL Found_Rows()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3453809/

相关文章:

mysql - 从将数字保存为字符串的列中获取最小值

MySQL 触发器与 IF 语句返回 #1064

Mysql SQL_CALC_FOUND_ROWS 和分页

mysql - UNION 上的 SQL_CALC_FOUND_ROWS 获取总行但子查询上有 LIMIT

php - 无法正则表达式某些模式(第 2 部分)

php - Opencart 前端运行良好,但管理员返回空白页

javascript - jquery ajax unhide div 如果变量等于

php - 如何在 laravel DB::select 查询中使用分页

MySQL - ORDER BY 子句导致 SQL_CALC_FOUND_ROWS 选择不返回数据

php - MySQL+PHP 沿着干净的日期字段返回时间