![]() |
1
0
AS
@ JJY分段故障
也就是说,在
以下是您如何做到这一点,并且仍然能够获得准确的统计数据:
查询将返回准确的访问计数。
主要的想法是您只需要扫描
更重要的是:您甚至不必扫描缓存统计信息中的所有记录。由于访问次数只会增加,所以只能扫描可能进入前四个的结果。
如果
唯一的问题是,您可以删除书籍或更改它们的类别。在这种情况下,您只需要重新计算统计数据或返回到原始方法。 |
![]() |
2
1
根据您昨天的评论,我认为问题在于您正在对计算(聚合)列进行排序,因此它不能使用索引。 唯一的方法是添加一个category.viewCount列,在更新book.viewCount时更新该列。它不会占用太多的额外空间。这种解决方案的缺点是:
如果这是我,并且性能是必需的,那么我将编写一个单独的服务,在启动时将当前的统计信息读取到内存中,并让系统向它发送更新,然后查询它以获取最新的统计信息。这样可以保存锁定和写入类别表。 当然,如果数字不一定是100%最新的,那么您可以在晚上运行查询并缓存当天的结果。 |
![]() |
hello_programmers · Mysql从其他表输出一列 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |
![]() |
Popo · Sql查询:返回数据库中不可用的where条件 1 年前 |
|
Hamdan Nuramdani · 对账单中一周内不同表中的数据求和 1 年前 |
|
Kugelfisch · 用php为数据库加密数据 1 年前 |