繁体   English   中英

数据库设计,最佳实践,需要建议

[英]database design, best practice, need advice

我有这个数据库,有一个名为“ badges”和“ subjects”的表,我在“ subject”中有一个标志字段,称为“ is_canceled” bool值,由于某种原因,有人建议我在“ badges”中有一个字段,称为“ canceled_subject_count”,其值与

"SELECT SUM(is_canceled) as cancel_count FROM subjects WHERE is_canceled = 1 AND badge_id = ".$some_badge_id

他说的原因之一就是性能,最好是将价值直截了当,而不是先求和

你们有什么感想? 我应该有这个领域吗? 为什么呢?

谢谢

这称为非规范化 在初始数据库设计中执行此操作可能会在以后节省您的时间和精力,但是可能是过早的优化。 您最好不要添加canceled_subject_count字段,并且如果经过一些分析后发现为徽章计算已取消主题时发现了测量的性能瓶颈,则可以添加该字段。

这实际上取决于软件的使用。 这种优化很大程度上取决于值的更改频率,查看该值的人数等。

如果它很少更改,则存储值并在发生更改时进行更新可能更聪明。

如果总和在不断变化,则仅在每次查询时计算总和会更明智。

但是,除非您要处理大量的请求,否则这笔费用几乎不会花费您什么,并且可能更容易使数据完整性保持良好状态。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM