计算确切编号的正确方法。 SQL 中使用 PHP PDO 的行数

Proper way to count the exact no. of rows in SQL using PHP PDO

我要数一数。我的 table 中的行数,我就是这样做的。如果我在性能方面有任何失误,请告诉我。

老办法

//I'm doing this to verify if the entered User name is correct.

$stmt = $conn->prepare("SELECT * FROM `users` WHERE `User` = ?");
$stmt->execute(array($user));
$Count = $stmt->rowCount();
echo $Count;

在某些网站上,我了解到 SELECT * 的使用存在一些性能问题,因此如果不需要所有列,则应避免使用

$stmt = $conn->prepare("SELECT `id` FROM `users` WHERE `User` = ?");
$stmt->execute(array($user));
$Count = $stmt->rowCount();
echo $Count;

我考虑过使用 MYSQL 函数 COUNT(),但我不确定它是否会提高 table 几百万行和大约 8-9 列的性能。

$stmt = $conn->prepare("SELECT COUNT(`id`) FROM `users` WHERE `User` = ?");
$stmt->execute(array($user));
for($stmt as $row)
    $Count = $row[0];
echo $Count;

我应该使用上面的哪一种,或者还有其他更好的方法吗?

使用 COUNT(*) 比获取所有行然后计数更有效。

所以你应该使用:

$stmt = $conn->prepare("SELECT COUNT(`id`) FROM `users` WHERE `User` = ?");
$stmt->execute(array($user));
$count = $stmt->fetchColumn();
echo $Count;

阅读更多关于 fetchColumn