我有一个varchar和两个BLOB类型的数据用于配方。我不需要数据之间的关系。例如,我不需要知道哪些膳食需要马铃薯等。
我将从数据库中获取膳食,编辑它们并将它们再次保存为BLOB。然后我将动态创建一个二进制文本文件(~100KB)并将其保存在另一个名为二进制数据的列中。
所以我的问题是,将表分成两部分是否有意义?将一个BLOB放在一个表中,将另一个BLOB放在另一个表中会改变性能(理论上)。或者除了备份问题之外它不会改变什么?
+-id--+-meal name (varchar)----+-materials (BLOB)------------+-binary data (BLOB)---+
| 1 | meatball | (meat, potato, bread etc.) | (some binary files) |
| 2 | omelette | (potato, egg, etc.) | (other binary files) |
+-----+------------------------+-----------------------------+----------------------+
答案 0 :(得分:0)
如果您将使用ORM,请更好地使用拆分表方法。 否则,当您要求提供材料时,ORM通常会获取所有可用字段...因此,阅读大而不必要的“二进制”对象。
另一方面......如果您将提供二进制结果,更好的方法是保存文件并直接提供它们。
答案 1 :(得分:0)
它更像是一种设计选择,而不是特定的性能改进。这假设您的查询没有执行全部“SELECT *”。您的查询应始终以您感兴趣的特定列为目标。
如果您没有预料到特定膳食的BLOB类型会超出您当前的预期,那么将其保存在一个表中是一个合适的选择。这是假设它们之间存在一对一的关系。
但是,如果有任何机会可能需要更多BLOB对象用餐,那么是的我会考虑将其拆分为新表和交叉引用。有时候,安全比抱歉更好。