从PHP中的mysql表中获取总记录的最快方法

Jas*_*vis 1 php mysql

下面是我用来获取数据库中照片总数的当前代码,估计的数字甚至可以接受,因为结果数仅用于确定我要上传到文件夹余额的文件夹号.

我觉得有一种更好的方式,然后我在下面使用?

$sql = 'SELECT auto_id FROM friend_user_photo';
$query = executeQuery($sql);
$rowcount = mysql_num_rows($query);
Run Code Online (Sandbox Code Playgroud)

$ rowcount返回friend_user_photo表中的记录数

更新:

没有办法读取有关数据库的信息.那可能比使用上面的方法或COUNT更快?

Ste*_*iec 5

您也可以使用COUNT.

$sql = 'SELECT COUNT(*) FROM friend_user_photo';
$query = executeQuery($sql);
Run Code Online (Sandbox Code Playgroud)

这将返回包含结果数量的单行.这也是一个常规的聚合函数,所以你可以做连接,子查询,条件(WHERE),分组和所有好东西.

您也可以将其视为另一个字段,因此您可以对其进行别名,然后在您的连接和子查询中使用它.您还可以选择其他数据,例如:

$sql = 'SELECT COUNT(*), name FROM table GROUP BY name
Run Code Online (Sandbox Code Playgroud)

这将返回一个不同的名称列表,但也将包含每个名称的记录数.

编辑替代count()

如果您不想使用COUNT(*),您还可以使用'show table status'.例如:

$sql = "SHOW TABLE STATUS LIKE 'friend_user_photo'";
// Note, this LIKE is a regular LIKE, so wild cards can be used
Run Code Online (Sandbox Code Playgroud)

这将返回包含各种元数据(包括行)的行,但也包括密钥长度(以字节为单位)和数据长度(以字节为单位)以及许多其他数据.这通常也非常快,因为它只是将元数据拉为运行像COUNT(*)这样的聚合函数(只要表没有被当前正在运行的另一个查询锁定).