2012-12-26 51 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