Mysql 是否将数据保存为数组或多行?哪种方式更有效?

Mysql 是否将数据保存为数组或多行?哪种方式更有效?,mysql,arrays,database,Mysql,Arrays,Database,目前我在mysql数据库中有很多行 venue_id venue_name venue_location venue_geolocation venue_type venue_url venue_manager venue_phone venue_logo venue_company venue_zip venue_vat venue_visible 将大多数数据存储在一个数组和一行中是否会比存储在同一行中更有效。然后它将只留下3行可见的场馆id、场馆数据和场馆。然后在我的应用程序中,我可以分

目前我在mysql数据库中有很多行

venue_id
venue_name
venue_location
venue_geolocation
venue_type
venue_url
venue_manager
venue_phone
venue_logo
venue_company
venue_zip
venue_vat
venue_visible

将大多数数据存储在一个数组和一行中是否会比存储在同一行中更有效。然后它将只留下3行可见的场馆id、场馆数据和场馆。然后在我的应用程序中,我可以分解该数组。服务器加载是否会节省时间?

将值存储为数组(将不同的值连接到一个字符串中?)肯定是个坏主意,因为:

  • 你会失去可读性
  • 您将无法轻松搜索连接的列
  • 无法正确索引这些列
此外,它不会对性能产生影响-另请参见


如果你对很多列不满意,你应该考虑规范化()你的DB模式。 将值存储为数组(将不同的值连接到一个字符串?)绝对是个坏主意,因为:

  • 你会失去可读性
  • 您将无法轻松搜索连接的列
  • 无法正确索引这些列
此外,它不会对性能产生影响-另请参见


如果你对很多列不满意,你应该考虑规范化()你的DB模式。 你必须问问自己,你“可能”节省的时间和空间是否值得付出代价

考虑:

  • 将列合并为一个列仍然具有可比的长度,因为所有列都是分开的
  • 通过使用适当大小的
  • 磁盘空间很便宜
  • 拥有不同的列使您能够查询这些列中的任何一列
  • 独特列还允许您在以后轻松添加或删除列,而无需重新构造每行的组合列
  • 不同的列您可以使用$result->fetch_assoc()立即获取数组中的结果行,而不是花费处理时间解析复杂字符串
  • 解析这样的字符串可能容易出现错误,选择特定的列是不正确的
  • 您可以在单个列上添加外键约束和索引,如果将它们组合在一起,这些约束和索引将不起作用
  • 您可以轻松地在不同的列上搜索,但如果将它们组合在一起,则无法进行搜索

我可以想出更多的理由来解释为什么不同的列是一个更好的选择,而不是试图以一种可能甚至不会节省您任何时间的方式来优化代码。查询速度可能快了几毫秒,但处理字符串的时间却浪费了。

您必须问问自己,您“可能”节省的时间和空间是否值得花费

考虑:

  • 将列合并为一个列仍然具有可比的长度,因为所有列都是分开的
  • 通过使用适当大小的
  • 磁盘空间很便宜
  • 拥有不同的列使您能够查询这些列中的任何一列
  • 独特列还允许您在以后轻松添加或删除列,而无需重新构造每行的组合列
  • 不同的列您可以使用$result->fetch_assoc()立即获取数组中的结果行,而不是花费处理时间解析复杂字符串
  • 解析这样的字符串可能容易出现错误,选择特定的列是不正确的
  • 您可以在单个列上添加外键约束和索引,如果将它们组合在一起,这些约束和索引将不起作用
  • 您可以轻松地在不同的列上搜索,但如果将它们组合在一起,则无法进行搜索

我可以想出更多的理由来解释为什么不同的列是一个更好的选择,而不是试图以一种可能甚至不会节省您任何时间的方式来优化代码。查询速度可能快了几毫秒,但处理字符串的时间却浪费了。

当您指的是存储为数组时,您是指将不同类型的信息绑定到单个数据库列(字符串)中吗?它可能(毫无疑问)保存的最短时间不值得失去可读性、不同的数据类型,查询特定列的能力,以及从每段信息使用一列中获得的许多其他好处,更不用说,您可以在数组中添加时间来解析凌乱的字符串,而不是简单地使用$result->fetch_assoc()。我建议您保持当前设置。当您的意思是存储为数组时,您的意思是将不同类型的信息绑定到单个数据库列(字符串)中吗?它可能(毫无疑问)节省的最短时间不值得失去可读性、不同的数据类型、查询特定列的能力,对于每一条信息使用一列,您还可以获得许多其他好处,更不用说您可以在数组中添加时间来解析凌乱的字符串,而不是简单地使用$result->fetch_assoc()。我建议您保持当前设置。