小编典典

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

mysql

由于性能问题, 我尝试避免执行Count( )。 (即 从用户中 选择COUNT( ))

如果我在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不希望传入两个查询。那么,我该怎么做呢?


阅读 512

收藏
2020-05-17

共1个答案

小编典典

SQL_CALC_FOUND_ROWS仅在使用LIMIT子句的情况下才有用,但仍想知道不使用会发现多少行LIMIT

考虑一下它是如何工作的:

SELECT SQL_CALC_FOUND_ROWS * FROM Users;

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

用人类的话来说,您购买了超级杂货店的全部内容,但从收银员的架子上扔掉了除口香糖外的所有东西。

而做:

SELECT count(*) FROM users;

让DB引擎知道,尽管您想知道有多少行,但您不必关心实际数据。在大多数任何智能DBMS上,引擎都可以从表的元数据中检索此计数,或者通过表的主键索引简单地运行,而无需触及磁盘上的行数据。

2020-05-17