gpt4 book ai didi

mysql - 数据库排序的时间复杂度

转载 作者:行者123 更新时间:2023-11-30 23:16:15 26 4
gpt4 key购买 nike

我目前正在开发移动应用程序并使用 Codeigniter MySQL。我现在面临的情况是我有一张书表(这张表有 100k+ 条记录)。在此表中,我有一个名为 NotSelling 的列。数据库示例:

Book A 45
Book B 0
Book C 159
Book D 78
.
.
.
Book Z 450

数字上方是数据库中 NotSelling 列中显示的内容。我需要从这张大表中提取前 20 本书。现在我的解决方案是对表进行排序,然后只使用 TOP 提取前 20 条记录。

我想知道的是表格排序的性能。因为我确信不断地对表格进行排序以简单地获得前 20 个结果将花费非常长的时间。我已经得到了问题的解决方案:

  • 索引 NotSelling 问题。
  • 缓存查询(但我读过粗略失效,这可能会导致问题,因为我的情况是失效频率很高)
  • 对表进行排序,取前 20 条记录,将它们放在另一个表中,然后定期更新表,比如每隔一小时左右更新一次。

但是综上所述,有没有人知道这个问题的更好解决方案,或者有办法/方法来优化我想要做的功能的性能?请注意,我是新手,所以如果有人能给我指明正确的方向,让我可以阅读有关数据库性能的信息,我将不胜感激。

最佳答案

我觉得你想多了。绝对是过早优化的案例。虽然上述所有解决方案都是完全有效的。你应该知道 100K+ 记录对 Mysql 来说是杂烩。我们过去经常对 3000 万多行的表进行排序,性能非常好。

但是您必须在要排序的列上有索引并仔细检查您的表架构。注册。缓存也别担心,当表没有改变时,mysql 会为你重复查询。但是列索引是必须的、主要的和最重要的要求。

关于mysql - 数据库排序的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17683180/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com