MySQL:一排或更多?

Ada*_*dam 3 mysql database database-design

我有任何类型的内容现在有ID,我可以types为内容指定多个.

问题是,我应该使用多行来添加多个类型或使用该type字段并将那些类型用逗号分隔并解析它们PHP

多行

`content_id` | `type`

1            | 1
1            | 2
1            | 3
Run Code Online (Sandbox Code Playgroud)

VS

单行

`content_id` | `type`

1            | 1,2,3
Run Code Online (Sandbox Code Playgroud)

编辑


我正在寻找更快的答案,而不是更容易,请考虑这个.性能对我来说非常重要.所以,我说的是一个真正庞大的数据库millionsten millions行.

Rob*_*Rob 5

我通常总是推荐"多行"方法,因为它有几个优点:

  • 您可以使用SQL返回,例如WHERE type=3没有任何困难,因为您不必使用WHERE type LIKE '%3%',效率较低
  • 如果您需要为每个content_idtype对存储额外的数据,您会发现在多行版本中它更容易
  • 当它以"多行"格式存储时,您将能够将一个或多个索引应用于表,以提高检索数据的速度
  • 当每个对分开存储时,编写查询以添加/删除content_idtype配对比将它们存储为逗号分隔列表更容易
  • 让(几乎)总是更快让SQL处理数据给你一个子集,而不是将它传递给PHP或其他任何东西进行处理

通常,让SQL做它最擅长的事情,它允许您存储数据,并获取数据的子集.