大数据库上的可选字段

时间:2019-04-25 07:52:00

标签: mysql

我目前正在重新设计mysql bdd。 这个数据库实际上是一个巨大的表,包含200个字段,几百万行,几乎没有索引...总之,灾难性的性能和巨大的内存消耗!

我首先设法通过建立1:n关系来减少字段数。

我有一个问题要问: 该数据库上的许多字段是可选的,很少填写。(有时几乎从不填写) 在这种情况下最好的办法是什么?

  • 即使该字段通常为空值,也将其保留在表中
  • 建立一个n:n关系,知道这些关系(如果存在)将仅返回一行
  • ...或其他我没想到的解决方案

预先感谢您的明智建议;) 迪米特里

1 个答案:

答案 0 :(得分:1)

我的建议:

  • 首先,请确保normalize您的数据库。至少到3rd Normal Form。这可能会减少您的一些原始列,并将它们拆分到几个表中。
  • 完成此操作后,如果某些表中仍然有很多“可选且很少填充”列,请根据需要考虑如何进行处理:对您来说最重要的是什么?磁盘空间还是性能?

请查看MySQL Optimazing Data Size,以获得有关重新设计数据库的更多提示/改进信息,具体取决于您的需求。

在某些情况下,关于“建立n:n关系...”(我想你的意思是1:1关系)可能是一个有趣的选择:

在某些情况下,将经常扫描的表分成两部分可能会有所帮助。如果它是动态格式表,并且可以使用较小的静态格式表,则在扫描表时可以使用该静态格式表查找相关行(摘自here)<< / p>