例如,如果我必須計算屬於文章的評論,很明顯,我不需要緩存評論總數。什麼時候應該考慮將總數保存在一個字段中?
但是,如果我想爲包含100萬張照片的圖庫(WHERE狀態= 1)分頁,該怎麼辦。我應該保存在一個稱爲計數或SELECT計數(ID)的表中,因爲每次總計都很好嗎?
還有其他解決方案嗎?
請指教。謝謝。
例如,如果我必須計算屬於文章的評論,很明顯,我不需要緩存評論總數。什麼時候應該考慮將總數保存在一個字段中?
但是,如果我想爲包含100萬張照片的圖庫(WHERE狀態= 1)分頁,該怎麼辦。我應該保存在一個稱爲計數或SELECT計數(ID)的表中,因爲每次總計都很好嗎?
還有其他解決方案嗎?
請指教。謝謝。
對於MySQL,您不需要存儲計數,您可以使用SQL_CALC_FOUND_ROWS
來避免兩個查詢。
例如,
SELECT SQL_CALC_FOUND_ROWS *
FROM Gallery
WHERE status = 1
LIMIT 10;
SELECT FOUND_ROWS();
從手冊:
在某些情況下,希望知道有多少行語句 本來沒有限制返回,但沒有運行 再次聲明。要獲得此行計數,請在SELECT語句中包含 SQL_CALC_FOUND_ROWS選項,然後在後面調用FOUND_ROWS() 。
樣本用法here。
這取決於一個對於在該表上完成的具有100萬條記錄的查詢的數量位。考慮只考慮好索引,尤其是多列索引(因爲它們很容易被忘記:here.這會做很多事情,並且確保查詢在您的服務器上也能緩存)
如果你使用這個列非常規則,考慮保存它(如果它不能被MySQL緩存),因爲事情可能會變得緩慢,但大多數時候好的索引會照顧它。如果查詢仍然很快,並且在連續執行多次時性能不下降。
EXPLAIN [QUERY]
使用該命令(在MySQL中)獲取有關查詢執行方式的信息以及是否可以改進。
@oaziz看到我的編輯上面 – RedFilter 2012-01-30 14:07:19