2012-06-17 55 views
0

快速方法說明:Mysql用戶統計

我有兩個表,讓它們命名爲表ONE和表TWO。 每個表記錄都有其作者(用戶)的標識。每個用戶的記錄沒有限制。

我想爲每個用戶運行一個統計頁面。

例如,當John登錄時:

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> "; 

問題:

那麼,是檢查是否有記錄的數量(每次用戶訪問他的數據頁)的最佳解決方案當表格記錄的數量達到幾百或幾千時? 有沒有更好的方法來運行統計信息?也許是爲每個用戶統計記錄的單獨表格?

謝謝:)

回答

3

正如你似乎沒有被使用ResultSet本身,

$a = mysql_query("SELECT COUNT(*) FROM A WHERE userID='$userID'"); 

會得到你在1步所需要的數量。而且,這很可能比你所做的要快很多。其次,您想要的優化類型絕對有可能(只需要一個group by userID,並且每小時或每天運行該腳本或任何其他,具體取決於所需的精度),但是我真的很期待直到你確定需要它爲止,因爲這意味着需要爲服務器和額外的代碼進行額外的維護工作。

第三次也是最後一次,擺脫了不推薦的mysql_query調用,並且還查找了準備好的語句。一旦習慣了它們,安全和不會更難。

0

你可以告訴MySQL指望他們爲你:

SELECT COUNT(*) AS a_num FROM A WHERE userID='$userID' 

這最大限度地減少您的應用程序和MySQL服務器之間的I/O。基準這個你自己。