MySQL:何时分解/分割表

标签 mysql sql rdbms

我正在构建一个数据库,但我不确定应该建立多深的层次结构。

看起来节省空间的最佳情况是三层。 组->子组->项目

在平均情况下,子组有 300 个项目,组有 100 个子组。目前商品已接近 100 万件,并且增长速度正在加快。

我坚持区分 GROUP 和 ITEM,因为它反射(reflect)了现实世界,但 SUB_GROUP 之所以存在,是因为 ITEM 通常在几百行中是相同的。需要明确的是,我可以获取子组的一个实例中的数据并将其附加到项目的每个实例。

在每个查询中至少进行 3 次连接是否会提高性能?或者我是否最好使用更多重复数据制作更少的表格?

最佳答案

这与其说是一个 MySQL 问题,不如说是一个一般的 SQL RDBMS 问题。

您拥有一个标准化的数据库,可以消除重复并最大限度地减少存储。

如果出现以下情况,您可能可以正确地标准化并将子组信息与该项目一起放置:

  1. 子组数据较小。
  2. 您经常同时查询子组和项目信息,但仅查看是不够的。
  3. 您实际上遇到了需要进行更改的性能问题 - 不要过早优化。

可能还有其他考虑因素,但这应该可以帮助您开始。

这里没有绝对的。

关于MySQL:何时分解/分割表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23258759/

相关文章:

mysql - mysql中的比较查询没有返回正确的结果

mysql - Rails 4/RSpec - 测试 Controller 规范中保存到 MYSQL 数据库的时间值

SQL - 与同一列中的多个值进行比较?

mysql - mysql 中的 'IN' 运算符中可以存在的值数量是否有限制?

php - 根据通过复选框获得的表在 SQL 中存储数据?

mysql - 计算左联合表中的非空值

sql - 带有 select 语句的 Oracle SQL View

mysql - 选择语句奇怪的行为

mysql - 如果总列总和小于 X,则更新行

mysql - 最高效的多级评论系统