快速方法说明:
我有两个表,让我们将它们命名为表ONE和表TWO。 每个表记录都有其作者(用户)的id。每个用户的记录没有限制。
我想为每个用户运行一个统计页面。
例如,当John登录时:
约翰| A(列表)| 20中的20 B的150(列表)
演示代码
$a = mysql_query("SELECT * FROM A WHERE userID='$userID'");
$b = mysql_query("SELECT * FROM B WHERE userID='$userID'");
$a_num=mysql_num_rows($a);
$b_num=mysql_num_rows($b);
$echo "$userID | $a_num of A <a href='/a/$userID'>(list)</a> | $b_num of B <a href='/b/$userID'>(list)</a> ";
问题:
那么,当表记录的数量达到几百或几千时,检查记录数(每次用户访问他的统计页面时)是一个最佳解决方案吗? 有没有更好的方法来运行统计数据?也许是一个单独的表来计算每个用户的记录?
谢谢:)
答案 0 :(得分:3)
由于您似乎没有使用结果集本身,
$a = mysql_query("SELECT COUNT(*) FROM A WHERE userID='$userID'");
将在一步中为您提供所需的计数。而且,它很可能比你正在做的快得多。
其次,您正在考虑的优化类型绝对是可能的(只需group by userID
就可以了,并且每小时或每天运行该脚本或其他任何内容,具体取决于所需的准确度)但是我d真的要等到那种东西,直到你确定你需要它,因为它意味着服务器的额外工作和维护的额外代码。
第三个也是最后一个,摆脱已弃用的mysql_query调用,并查找准备好的语句。一旦你习惯了它们,就会更加安全而不是更难。
答案 1 :(得分:0)
你可以告诉MySQL为你计算它们:
SELECT COUNT(*) AS a_num FROM A WHERE userID='$userID'
这可以最大限度地减少应用程序和MySQL服务器之间的I / O.自己进行基准测试。