我应该对我的 table 进行非规范化,我应该对 FK 列进行非规范化

Should I denormalize my table, should I denormalize a FK column

我有一个 table 列 created_time (DateTime) 和一个 foreign_key 我需要用 x foreign_key 检索所有行使用 x foreign_key 创建的最后一行可以说超过 2 分钟(并检索具有该日期的所有行)

我的问题:什么对性能更好,是在每次创建行时添加一个存储最后一行创建日期的列,还是使用更复杂的查询来检索最后一行加入的那些行?

本质上问题是 "Should I denormalize the created_time?" 这里的答案是,从性能的角度来看,正确索引集的差异是 可以忽略不计 如果非规范化,这将导致数据在您的模式中重复,这可能会在某一天引发其他问题。从这个角度来看,我的建议是不要这样做,并使用 SQL 的表达能力来检索您需要的内容。

通过对 created_time 进行非规范化,您正朝着平面表设计迈进,最终将创建一个 NoSQL 数据库,我认为这不是您想要遵循的方法。因为您是使用 SQL 时,您应该使用带有 EXPLAIN 关键字的 SQL 查询功能,并注意 运行 您的查询所花费的时间。我相信处理您的所有行不会花费太多时间。