快速方法描述:
我有两张桌子,我们把它们命名为第一桌和第二桌。每个表记录都有其作者(用户)的id。每个用户的记录没有限制。
我想为每个用户运行一个统计页面。
例如,当John登录时:
A类(名单)的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> ";问题:
那么,当表记录的数量达到几百个或上千个时,检查记录的数量(每次用户访问他的统计页面)是一个最佳的解决方案吗?有没有更好的方法来运行统计?也许是一个单独的表来统计每个用户的记录?
谢谢:)
发布于 2012-06-17 14:10:28
由于您似乎没有使用结果集本身,
$a = mysql_query("SELECT COUNT(*) FROM A WHERE userID='$userID'");一步就能得到你所需要的数。而且,它很可能比你所做的要快得多。
其次,你正在考虑的那种优化是完全有可能的(只需要一个group by userID,并且每小时或每天运行一个脚本,取决于所需的准确性),但是我真的会用这种方法等待,直到你完全确定你需要它,因为它意味着服务器需要额外的工作和需要维护的额外代码。
第三,也是最后一步,去掉不推荐的mysql_query调用,并查找已准备好的语句。一旦你习惯了,就会安全得多,而不是更难。
发布于 2012-06-17 14:09:44
你可以让MySQL帮你数一数:
SELECT COUNT(*) AS a_num FROM A WHERE userID='$userID'这将使应用程序和MySQL服务器之间的I/O最小化。你自己来测试一下。
https://stackoverflow.com/questions/11071854
复制相似问题