我打算創建一個包含x千行數據的mysql 5(myISAM)表。每行將有一個計數字段,&具有20個最高計數值的行將被檢索很多,可能與每行更新的一比一。通常不會檢索到這20行中的千行。檢索'最受歡迎'表格行的高效db設計
有什麼選擇將選擇一個有效的方法來查詢20個最高計數值。數據不是有是實時生活,但它有幫助!
我打算創建一個包含x千行數據的mysql 5(myISAM)表。每行將有一個計數字段,&具有20個最高計數值的行將被檢索很多,可能與每行更新的一比一。通常不會檢索到這20行中的千行。檢索'最受歡迎'表格行的高效db設計
有什麼選擇將選擇一個有效的方法來查詢20個最高計數值。數據不是有是實時生活,但它有幫助!
在計數字段上創建一個索引。完成。
每五分鐘,空出來,然後將前20個複製到一個單獨的表。要獲得前20名,請參考該表。完成!
(或者,你可以在接下來的幾個小時調整您的查詢,參數和指標,使之都「恰到好處」)
爲什麼downvotes?至少我會很感激你爲什麼不喜歡這個想法...... – 2010-02-05 01:15:14
添加一個索引來計數字段,然後只是一個正常的查詢:
SELECT * FROM myTable ORDER BY countField DESC LIMIT 20;
最快的手指第一。以防萬一你想知道,我曾考慮過輪詢解決方案,甚至可能只是將20個最繁忙的行復制到一個單獨的表中,並將它們的更新放在那裏,也許是'重新索引'20日報或其他任何內容......但始終是索引在這些情況下的正確解決方案? – rutherford 2010-02-05 00:58:55
對於只有數千行的表格,索引將會很好。當你得到數百萬行時,減小數據集的大小值得額外付出。 – 2010-02-05 01:01:36