2012-02-29 43 views
0

可以将不同数据类型的数据存储为单一通用数据类型,比如SQL中的'image'吗?我还会将数据类型值存储在另一列中,并在我的代码中使用此值将数据转换回适当的类型。 我这样做的好处是 - 我可以避免加入n个表格。 有人可以用这种方式指向存储数据的下方吗?是否可以将所有类型的值存储为sql中的图像数据类型?

+1

您应该尝试学习如何使用连接。 – 2012-02-29 11:07:06

+0

你是一个巨魔吗? – Mau 2013-11-06 14:23:18

回答

2

这是由于以下几个原因非常糟糕的主意:

  • 查询性能将是不好的,因为优化器不能利用索引,外键等,因为它们不存在。
  • 您没有获得参照完整性,因此可以不假设您的数据。
  • 您引入了一个新的附加故障点,因为如果数据不符合指定的数据类型会怎么样?
  • 在你恨你之后必须维护代码的人。
+0

我喜欢最后一点。 – 2012-02-29 11:07:40

1

我觉得你会是不明智的,采取这种方式,至少有2个原因

  1. 你会的,因为你注意到,不断地类型转换的输入和输出。我看不出这是一个有用的操作,虽然我可以把它看作是一个耗时的操作。
  2. 你会交换加入N个表格的(适度的)困难,以便在你的一个表格中进行N个加入(不太适中)。

然后有一个更哲学的论点,沿着你建议使用多工具(SQL),就像它是一把锤子一样。并非每一种数据类型都是一个钉子。你将会更加高效,如果你的工作与工具的性质无关,我会主张更多地享受你的工作。

我同意Daniel Hilgarth已经写的东西。

+0

我认为代码中的类型转换输入和输出比连接更省时。看起来情况并非如此。 – user811433 2012-02-29 11:21:15

+1

如果您的连接耗时,最有可能数据库出现问题。也许在外键上没有索引或数据类型不匹配,并发生隐式转换。你可以检查你的查询的解释计划,以找出需要这么长时间。 – 2012-02-29 11:26:56