【问题标题】:Is it ok to store all types of values as image data type in sql?可以在sql中将所有类型的值存储为图像数据类型吗?
【发布时间】:2012-03-18 20:42:11
【问题描述】:

是否可以将不同数据类型的数据存储为单一的通用数据类型,例如 SQL 中的“图像”?我还将数据类型值存储在另一列中,并在我的代码中使用该值将数据转换回正确的类型。 这样做的好处是——我可以避免加入 n 个表。 有人能指出我以这种方式存储数据的缺点吗?

【问题讨论】:

  • 您应该尝试学习如何使用加入。

标签: sql image store


【解决方案1】:

这是一个非常糟糕的主意,原因如下:

  • 查询性能会很差,因为优化器无法利用索引、外键等,因为它们不存在。
  • 您无法获得参照完整性,因此无法对您的数据做出任何假设。
  • 您引入了一个新的附加故障点,因为如果数据与指定的数据类型不对应怎么办?
  • 在你之后必须维护代码的人会恨你。

【讨论】:

    【解决方案2】:

    我认为至少有两个原因不建议您采用这种方法

    1. 正如您所指出的,您会不断地对输入和输出进行类型转换。虽然我认为这是一项耗时的操作,但我不能认为这是一项有用的操作。
    2. 您可以将连接 N 个表的(适度的)困难换成在您的一个“所有表之母”上进行 N 次连接的(不那么适度的)困难。

    然后是更具哲学意义的论点,您建议使用多功能工具 (SQL),就好像它是一把锤子一样。并非每种数据类型都是钉子。如果你使用而不是违背工具的性质,你会更有效率,而且我会断言你会更享受你的工作。

    我同意 Daniel Hilgarth 已经写的内容。

    【讨论】:

    • 我认为代码中的类型转换输入和输出会比连接更省时。看来不是这样的。
    • 如果您的连接很耗时,很可能您的数据库有问题。也许外键上没有索引或者数据类型不匹配并且发生了隐式转换。您可以检查查询的解释计划以找出需要这么长时间的原因。
    猜你喜欢
    • 1970-01-01
    • 2013-03-16
    • 2021-11-27
    • 2021-08-25
    • 2015-06-05
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多