0

我有一种 varchar 和两种 BLOB 类型的食谱数据。我不需要数据之间的关系。例如,我不需要知道哪些饭菜需要土豆等。

我将从数据库中获取膳食材料,对其进行编辑并再次将它们保存为 BLOB。然后,我将即时创建一个二进制文本文件 (~100KB) 并将其保存在另一个名为 binary data 的列中。

所以我的问题是,将表一分为二有意义吗?将一个 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) |
+-----+------------------------+-----------------------------+----------------------+
4

2 回答 2

0

它更多的是一种设计选择,而不是特定的性能改进。这假设您的查询没有执行包罗万象的“SELECT *”。您的查询应始终针对特定目的您感兴趣的特定列。

如果您预计特定餐食的 BLOB 类型不会超过您当前的预期,那么将其放在一张桌子上是一个合适的选择。这是假设它们之间存在一对一的关系。

但是,如果有任何机会可能需要更多的 BLOB 对象来用餐,那么是的,我会考虑将其拆分到一个新表和交叉引用中。有时,安全总比后悔好。

于 2013-05-20T20:27:21.483 回答
0

如果您将使用 ORM,最好使用拆分表方法。否则,当您要求材料时,ORM 通常会获取所有可用字段......因此读取大而不必要的“二进制”对象。

另一方面...如果您要提供二进制结果,更好的方法是保存文件并直接提供它们。

于 2013-05-20T20:24:59.867 回答