我目前正在开发一个移动应用程序并使用 Codeigniter MySQL。我现在面临的情况是我有一张书表(这张表将有 100k+ 条记录)。在此表中,我有一个名为 NotSelling 的列。数据库示例:
Book A 45
Book B 0
Book C 159
Book D 78
.
.
.
Book Z 450
上面的数字是 db 的 NotSelling 列中显示的数字。我需要从这个大表中提取前 20 本书。现在我的解决方案是对表格进行排序,然后只使用TOP
提取前 20 条记录。
我想知道的是关于表格排序的性能。我敢肯定,不断地对表格进行排序以获得前 20 个结果将花费非常长的时间。我已经得到了问题的解决方案:
- 索引 NotSelling 问题。
- 缓存查询(但我读过粗略的失效可能会导致问题,因为我的情况下失效频率会很高)
- 对表进行排序,取出前 20 条记录,将它们放在另一个表中,然后每隔一小时左右定期更新表。
但是所有这些都说有没有人知道这个问题的更好解决方案,或者有一种方法/方法来优化我想要做的功能的性能?请注意,我是新手,所以如果有人能够指出我可以阅读有关数据库性能的正确方向,我将不胜感激。