[英]When should I consider saving the total count in a field?
例如,如果我必須計算屬於某條文章的評論,那么很明顯我不需要緩存全部評論。
但是,如果我想對包含100萬張照片的畫廊(狀態為1)進行分頁怎么辦? 我應該將其保存在稱為counts或SELECT count(id)的表中,因為每次都可以總計嗎?
還有其他解決方案嗎?
請指教。 謝謝。
對於MySQL,不需要存儲計數,可以使用SQL_CALC_FOUND_ROWS
避免兩個查詢。
例如,
SELECT SQL_CALC_FOUND_ROWS *
FROM Gallery
WHERE status = 1
LIMIT 10;
SELECT FOUND_ROWS();
從手冊:
在某些情況下,需要知道語句在沒有LIMIT的情況下返回了多少行,但是沒有再次運行語句。 若要獲得此行計數,請在SELECT語句中包含SQL_CALC_FOUND_ROWS選項,然后再調用FOUND_ROWS()。
示例用法在這里 。
它多少取決於在具有100萬條記錄的表上執行的查詢量。 考慮只照顧好索引,尤其是多列索引(因為它們很容易被遺忘: 這里。這樣做會做很多事情。而且,請確保查詢也很好地緩存在您的服務器上。
如果您經常使用此列,請考慮保存它(如果它不能被MySQL緩存),因為事情可能會變慢。 但是在大多數情況下,良好的索引會解決這一問題。
最佳嘗試:設置一些測試,以查明在連續執行多次查詢后,查詢是否仍然可以快速執行並且性能沒有下降。
EXPLAIN [QUERY]
使用該命令(在MySQL中)獲取有關執行查詢的方式以及是否可以改進查詢的信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.