将数据保存为数组还是多行?哪种方式效率更高?

Save data as array or in multiple rows? Which way is more efficient?

目前我在 mysql db

中有很多行
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

像 venue_data 一样,将大部分数据存储在一个数组和一行中会更有效吗?那么它将只留下 3 行 venue_id、venue_data、venue_visible。然后在我的应用程序中我可以分解那个数组。它会节省时间和服务器负载吗?

将值存储为数组(将不同的值连接成一个字符串?)绝对不是一个好主意,因为:

  • 你会失去可读性,
  • 您将无法轻松搜索串联的列,
  • 您无法正确索引这些列。

此外,它不会对性能产生影响 - 另请参阅 Is there a performance decrease if there are too many columns in a table?

如果您对许多列不满意,您应该考虑规范化 (DB Normalization) 您的数据库模式。

你必须问问自己,你 'might' 节省的时间和 space 是否值得。

考虑:

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

我可以想出更多的理由来说明为什么不同的列比尝试以一种甚至可能不会为您节省任何时间的方式优化代码更好。查询可能会快几毫秒,但您浪费了处理字符串的时间。