数据库性能:表中的更多列如何影响设计/开发/性能

时间:2014-08-01 11:51:41

标签: mysql sql database-design relational-database database-schema

我有一个程序可以捕获许多不同类型的结构化消息。我需要将消息持久化到数据库。论坛对设计和绩效的看法是什么:

(a)对所有消息类型使用一个大表,因此要处理任何新消息类型,新列将添加到大表中。因此,数据库是一个表,最终可能有100列。

(b)为每种消息类型使用表,因此对于新消息类型,将新表添加到数据库中

通过性能,我的意思是搜索所有消息(即搜索一个表与跨联接表的搜索)以及开发工作(即开发人员之间的知识转移)和维护(即出现问题时)。

这听起来有点像关于规范化,但我不确定是不是。

谢谢!

1 个答案:

答案 0 :(得分:1)

如果我读对你,选择(a)相当于所谓的" One True Lookup Table" (OTLT)。 OTLT是一个反模式。你可以在网上研究它。

性能下降,因为必须在两个字段(类型和代码)上完成查找。对于每种类型使用单独的表,查找仅在代码上。

查询更复杂,因此更有可能出错。

如果您需要为每种类型单独输入表单,则数据管理会更难。如果您只有一个真正的类型输入表单,则在输入新的查找值时需要小心。祝你好运。