2012-12-26 49 views
3

是否有更快的查询来计算使用WHERE语句的行数? 我在PHP使用当前查询是:

$result = mysql_query("SELECT SQL_NO_CACHE id FROM users WHERE user = '$tnuser'"); 
$total = mysql_num_rows($result); 

表引擎是InnoDB和ID是主键和用户索引。这个查询每秒运行300+,因此任何性能增益都会很好。总数总是在变化,并且用户经常被删除/添加。

谢谢

回答

4

通常它更快地使用SQL的聚合函数来计算一些东西。你可以试试

SELECT COUNT(*) FROM users WHERE user = '$tnuser' 
+0

它已将查询从500毫秒提高到200毫秒谢谢! – chillers

+0

对于那些应该是快速索引参考的东西来说,这听起来仍然很多。通过EXPLAIN SELECT COUNT(*)...检查您的表上是否设置了正确的索引。 – MatsLindh

+0

@fiskfisk sry我的意思是它通过增加了300秒改进了脚本本身。它导致mysql在高峰期使用较少的cpu 20%。 – chillers