【发布时间】:2017-11-01 12:29:03
【问题描述】:
我有一个非常大的 MySQL 数据库。因此,我能感觉到网站变慢了。
现在,在很多页面上,我只需要数据的一部分。例如,出于历史目的,我每 5 分钟存储一次有关用户的信息。但是在一页上我只需要最新的信息(而不是整个数据历史)。我在查询中通过一个简单的MAX(date) 来实现这一点。
现在我想知道是否最好创建一个单独的表来存储最新数据,这样查询就不必在数百万行之间搜索来自特定用户的最新数据,而是只是有一个表,里面只有每个用户的最新数据。
这里的缺点是我必须每 5 分钟运行 2 次查询以在我的数据库中插入最新的历史记录,即在历史记录表中插入新数据并更新最新历史记录表中的数据。
优点是 MySQL 需要处理的数据要少得多。
处理此类问题的常用方法是什么?
【问题讨论】:
-
如果您显示当前的数据库结构(包括索引)可能会有所帮助;以及带有“simple MAX(date)”的查询。
-
通常这个问题是通过索引来解决的——在这种疯狂的架构选择之前可能想尝试一下