PHP
$total_points = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM account WHERE id='$id'"),0)
Mysql帐户表
|user_id|
mysql点表
|id | user_id | points |
或
PHP
$total_points = mysql_query("SELECT points FROM account WHERE id='$id'");
Mysql帐户表
|user_id| points |
Mysql点表
|id | user_id | points |
答案 0 :(得分:3)
存储变量可能会更快,但这也意味着不断更新它,从长远来看,这可能效率更低/更慢。
然而,使用COUNT(id)
会比COUNT(*)
好得多。所以我的投票是使用COUNT(id)
:)
答案 1 :(得分:0)
首先,对于您的第一行,我认为使用FOUND_ROWS()
比使用COUNT(*)
更快。
$total_points = mysql_num_rows(mysql_query("SELECT FOUND_ROWS() FROM account WHERE id='$id'"),0)
一旦点表变大,第二种方法会更快,但您需要确保正确增加帐户表以使这些值保持同步。如果您忘记在某些地方添加积分,或忘记删除它们等,它可能会变得不准确。
答案 2 :(得分:0)
COUNT(*)
或查询版本应该更快,因为您不会更进一步到mysql_num_rows
。对于计数,您不需要所有字段(*
),您只需执行COUNT(fieldID)
即可快得多。
需要注意的几点:
请注意,您只使用了一行,因为您使用的是where
子句,换句话说,如果找不到,结果将是一行或没有行:
$total_points = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM account WHERE id='$id'"),0)
通常情况下,当您期望多个记录时,您应该计算,例如:
$total_points = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM account"),0)
同样,对于优化查询,请使用单个字段:
$total_points = mysql_result(mysql_query("SELECT COUNT(fieldID) as Num FROM account"),0)