Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以将所有类型的值存储为sql中的图像数据类型吗?_Sql_Image_Store - Fatal编程技术网

可以将所有类型的值存储为sql中的图像数据类型吗?

可以将所有类型的值存储为sql中的图像数据类型吗?,sql,image,store,Sql,Image,Store,将不同数据类型的数据存储为单个通用数据类型(如SQL中的“image”)可以吗?我还将数据类型值存储在另一列中,并在代码中使用该值将数据转换回正确的类型。 这样做的好处是,我可以避免加入n个表。 有人能告诉我用这种方式存储数据的缺点吗?这是一个非常糟糕的主意,原因有几个: 查询性能将很差,因为优化器无法利用索引、外键等,因为它们不存在 您无法获得引用完整性,因此无法对数据进行任何假设 您引入了一个新的附加故障点,因为如果数据与指定的数据类型不对应,该怎么办 在你之后不得不维护代码的人会讨厌你

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

这是一个非常糟糕的主意,原因有几个:

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

    • 这是一个非常糟糕的主意,原因有几个:

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

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

    • 正如您所注意到的,您将不断地对输入和输出进行类型转换。我不认为这是一个有用的操作,尽管我认为这是一个耗时的操作
    • 您可以将连接N个表的(适度)困难替换为在所有表中的一个表上进行N个连接的(不那么适度)困难
    • 还有一个更具哲理的论点,即您建议将多工具(SQL)当作锤子来使用。并非每种数据类型都是钉子。如果你使用工具而不是违背工具的本质,你会更有效率,我也会更喜欢你的工作


      我同意丹尼尔·希尔加思(Daniel Hilgarth)已经写过的内容。

      我认为你采取这种方法是不明智的,至少有两个原因

    • 正如您所注意到的,您将不断地对输入和输出进行类型转换。我不认为这是一个有用的操作,尽管我认为这是一个耗时的操作
    • 您可以将连接N个表的(适度)困难替换为在所有表中的一个表上进行N个连接的(不那么适度)困难
    • 还有一个更具哲理的论点,即您建议将多工具(SQL)当作锤子来使用。并非每种数据类型都是钉子。如果你使用工具而不是违背工具的本质,你会更有效率,我也会更喜欢你的工作


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

      你应该试着学习如何使用连接。你应该试着学习如何使用连接。我认为在代码中输入和输出类型转换比连接花费的时间更少。看起来情况并非如此。如果您的联接非常耗时,则很可能是您的数据库出了问题。可能外键上没有索引,或者数据类型不匹配,会发生隐式转换。您可以检查查询的解释计划,以了解什么需要这么长的时间。我认为代码中的类型转换输入和输出比连接花费的时间更少。看起来情况并非如此。如果您的联接非常耗时,则很可能是您的数据库出了问题。可能外键上没有索引,或者数据类型不匹配,会发生隐式转换。您可以查看查询的解释计划,以了解什么需要这么长时间。