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

时间:2015-01-06 21:51:40

标签: mysql arrays database

目前我在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。然后在我的应用程序中,我可以爆炸该数组。它会节省时间,服务器负载吗?

2 个答案:

答案 0 :(得分:2)

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

  • 你将失去可读性,
  • 您将无法轻松搜索连接列,
  • 您无法正确索引这些列。

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

如果您对许多列不满意,则应考虑规范化(DB Normalization)数据库架构。

答案 1 :(得分:1)

你必须问自己,你可能会花费多少时间和空间。节省是值得的。

考虑:

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

我可以想到更多的原因,为什么不同的列是一个更好的选择,而不是试图以一种甚至不会在任何时候节省你的方式优化代码。查询可能会快几毫秒,但是您丢失了处理字符串的时间。