我目前正在開發一個移動應用程序並使用Codeigniter MySQL。我現在面臨的情況是,我有一張桌子的書(這張桌子將有100K +的記錄)。在這張表中我有一個名爲NotSelling的專欄。 db的示例:排序數據庫的時間複雜性
Book A 45
Book B 0
Book C 159
Book D 78
.
.
.
Book Z 450
上面的數字出現在數據庫的NotSelling列中。我需要從這張大桌子上提取前20本書。現在我的解決方案是對錶格進行排序,然後使用TOP
來提取前20條記錄。
我想知道的是關於排序表的性能。因爲我確定不斷排序表格以簡單得到前20個結果需要花費很長時間。我已經給出瞭解決問題的方法:
- 索引NotSelling問題。
- 緩存查詢(但我讀過有關粗無效這可能會導致問題,因爲我的情況下失效頻率會很高)
- 排序表中取前20條記錄,將它們放置在另一張表,然後定期剛更新表格說每小時左右。
但是,這一切說有沒有人知道這個問題的更好的解決方案或有一種方法/方法來優化功能的性能,我期待做的?注意我是一個新手,所以任何人都應該能夠指向正確的方向,在那裏我可以閱讀關於數據庫性能的內容,我真的很感激它。
謝謝你的回覆!在我開始編碼之前,確實需要澄清事情 – user481610