由于性能问题,我尽量避免使用 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/