我无论如何都不是DBA,但我对数据库优化的一些基本原理有基本的了解。
目前我们有一个记录会话数据的表,它每月写入大约 120 万行。在每个月初,我们将上个月的行分开,并将它们移动到名为“ tbl_session_mm_yyyy ”的表中。我们要开始查询实时表和旧表并提取上次登录等详细信息(简单的 sql 查询,从 tbl_live 中选择 maxdate,其中 accountid = 123 union select 等来自 tbl_old 等)。
现在我在想我们的数据库结构的设计不太适合这个。因此,如果我们每年有 12 张桌子,我们将不得不继续建立庞大的工会来获得所有这些桌子。因此,这样做会更好:
tbl_sessions: -这是被写入所有的时间活动表,索引,例如关于用户ID,ACCOUNTID。这将只包含当前月份的记录。
tbl_old_sessions : - 这将取代月表,成为一个包含所有前几个月记录的巨型表。进行分配的一个月(由NOW()人口将DateField)和索引的ACCOUNTID,用户ID等
这种设计是否比我之前的月度表更有意义?如果按实际日期进行的查询很少,我是否应该担心对 tbl_old_sessions 进行分区?