Ben*_*ird 1 mysql database-design
想象一个假设的数据库,它存储产品。每个产品都有 100 个属性,但任何给定的产品只会为其中大约 50 个属性设置值。我可以看到三种存储这些数据的方法:
一个有 100 列的表,
一个表的内容很少(比如每个产品都有一个值的 10 列),另一个表包含列(product_id、属性、值)。即,EAV 数据存储。
每列都有一个单独的表。因此,核心产品表可能有 2 列,并且还有 98 个其他表,每个表都有两列 (product_id, value)。
抛开这些极端之间的灰色阴影,从纯粹效率的角度来看,哪个最好使用?我认为这取决于正在运行的查询的类型,即大多数查询是针对产品的多个属性,还是针对多个产品的单个属性的值。这对效率有何影响?
假设这是一个使用 InnoDB 的 MySQL 数据库,并且所有表都有适当的外键以及 Product_id 上的索引。假设属性名称和值是字符串,并且没有索引。
一般来说,我问访问一个非常大的表是否比具有许多连接的查询花费更多或更少的时间。
我在这里发现了类似的问题:最好有数百列或分成多个表?
不同之处在于,该问题是针对特定情况询问的,并没有真正告诉我一般情况下的效率。其他类似的问题都是在讨论组织数据的最佳方式,我只是想知道不同的组织系统如何影响查询的速度。
| 归档时间: |
|
| 查看次数: |
1716 次 |
| 最近记录: |