第一个问题:
在
COUNT()内部,使用count ,服务器(MySQL)将以不同方式处理请求。
这样做时
COUNT(),服务器(MySQL)将只分配内存来存储计数结果。
使用
$row=$SQL->rowCount();服务器时(Apache /
PHP)将处理整个结果集,为所有这些结果分配内存,并将服务器置于获取模式,这涉及许多不同的细节,例如锁定。
请注意,它
PDOStatement::rowCount()返回受最后一条语句影响的行数,而不是返回的行数。如果关联程序执行的最后一条SQL语句
PDOStatement是一条
SELECT语句,则某些数据库可能会返回该语句返回的行数。但是,并非对于所有数据库都可以保证此行为,并且便携式应用程序不应该依赖此行为。
根据我的分析,如果使用
COUNT(),则该过程将分为MySQL和PHP,而如果使用
$row=$SQL->rowCount();,则该过程将更多地用于PHP。
因此
COUNT()在MySQL中速度更快。
第二个问题:
COUNT(*)比更好
COUNT(id)。
说明:
count(*)mysql中的函数经过优化以查找值的计数。使用通配符意味着它不会获取每一行。它只找到计数。因此,请
count(*)尽可能使用。
资料来源:
- PDOStatement :: rowCount
- MySQL COUNT(*)



