3 回答

TA貢獻1843條經驗 獲得超7個贊
你要不創建一個trigger和一張表用來記錄行數,如果你的入數據庫的量不大的話。 比如
ON INSERT UPDATE counter SET table_name_count = table_name_count + 1 ;
然后前臺讀取的時候從那張表讀就是了。
不過也要看你用的是什么SQL了, MySQL的 MyISAM 對這個問題是做了優化的; 就直接SELECT COUNT就是了。

TA貢獻2041條經驗 獲得超4個贊
維護一個隊列,隊列的每個元素是記錄產生的時間:
1. 每當一個新紀錄產生時,入隊。更新隊列的元素總數。
2. 每當來一次查詢的時候,計算起始時間t,將所有小于t的記錄出隊。更新隊列的元素總數。返回隊列的元素總數。
優點:高效、精確。
缺點:占用一定的內存,對于100萬個元素需要約4MB的內存空間。
p.s. 這個算法可以很容易地用mysql表來實現。

TA貢獻1807條經驗 獲得超9個贊
不斷變化,還是count比較好吧,你緩存還不要斷更新緩存。
因為這個值是根據你的當前時間不斷在變的。
還有你實際上每時每刻都要重新計算,因為14:00訪問,14:01訪問,14:02訪問得到的數據都需要重新計算,都可能發生變化。
不過要是只是統計7天的數據,你倒是可以緩存一下,當前時間超過7天的就從緩存中刪除,然后不斷更新對應時間段的緩存。
可是有一個問題,如果按照時間段來緩存count,你可能會同時更新n個緩存。
- 3 回答
- 0 關注
- 193 瀏覽
添加回答
舉報