【问题标题】:Best approach for mysql table with large number of columns [duplicate]具有大量列的mysql表的最佳方法[重复]
【发布时间】:2018-02-04 12:14:37
【问题描述】:

Mysql 表。

phones
| ID | Name  //5-6 columns
Specifications
| ID |phone_id| ram | camera | price |network // 50 columns approx 

到目前为止,我的规格表有 50 列,所以我需要建议如何处理这种情况?我是否需要创建一些其他表来拆分规格表,或者我可以继续这样做吗? 我需要更好的建议以提高速度和性能。

【问题讨论】:

  • 如果没有更多信息,DB 设计是不可能的。乍一看,我可以在一个表中看到列名 出现 就像它们可以被拆分一样,所以我猜你需要坐下来决定哪些列更适合单独表。例如,“ram”和“price”真的适合在同一张桌子上吗?当然,您有超过 1 个产品,因此您将“可能”拥有一个价格表,其中价格映射到(例如)product_id 来自具有所有 product_id 的产品表。也许带有 ram 和其他东西的“规格”表。用你提供的信息很难确定
  • 感谢您的回复。
  • 我已经将一些基本的列,如名称,价格,图像放在一个表中,并保留在规格表中。请你看看这个链接gsmarena.com/samsung_galaxy_note8-8505.php
  • 谢谢你非常有用的文章。 @DMishra

标签: php mysql database-performance


【解决方案1】:

处理超过 50 列以上并不是最好的方法-

  1. 插入、更新、选择等数据库操作可能需要一些时间。
  2. 在交易时处理数据变得很困难 表格中有 50 多列。

所以我建议不要继续在表格中添加列。 mysql-table-with-40-columns 可能有助于解决您的问题。

【讨论】:

    【解决方案2】:

    也许您可以拥有 1 个主表,其中包含 id、名称、日期和更多特定于帖子的内容。 然后您可以创建 1 个 meta_table,其中包含 id、main_id(此链接到主表中的帖子)、meta_name(即:价格或颜色或尺寸)、meta_value(即:125,95 或黑色或 150 x 50 x 8 )。 这样,您可以将尽可能多的类似列的值存储到 1 个表中,并使用 id 链接到 1 个主表。 这与 wordpress 使用的概念相同。

    否则,您还可以在主表中使用称为序列化数据/数组的东西,这是一个包含许多数组键及其值的 1 列字段。

    【讨论】:

      猜你喜欢
      • 2010-10-16
      • 2018-01-03
      • 2013-08-17
      • 1970-01-01
      • 2018-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-05
      相关资源
      最近更新 更多