【问题标题】:optimizing tables in mysql优化mysql中的表
【发布时间】:2016-07-27 08:22:08
【问题描述】:

绞尽脑汁寻找优化下表的最佳方法,因此我不会将冗余信息添加到我的数据库中。希望尽我所能优化城市、县和 zip。

城市

  • city_id tinyint 2
  • 名称 varchar 16
  • 人口平均数 7
  • 网站 varchar 255

  • county_id tinyint 2
  • 名称 varchar 32

压缩

  • zip_id tinyint 2
  • 压缩字符 5
  • 一些映射信息 - 仍然需要弄清楚

然后加入 -

位置

  • location_id tinyint 2
  • city_id tinyint 2
  • zip_id tinyint 2
  • county_id tinyint 2

location id 然后放在业务表中,这个表很大,我会处理它,看看我是否可以提高效率

商业

  • bus_id
  • 姓名
  • 街道
  • - location_id tinyint 2

有什么建议吗?我在正确的轨道上吗?

【问题讨论】:

  • 县名不是全球唯一的。您可以有“XYZ 县,俄勒冈州”和“XYZ 县,内布拉斯加州”。您必须在州/省级别链接县,而不是整个宇宙。
  • 这只是一个有限的本地数据库,因此所有县都在一个州内
  • 哇,这就是标准化变得疯狂时的样子。我还不完全理解您所说的“优化”是什么意思……尤其是我不明白为什么街道是业务表的一部分而不是位置表的一部分。优化很大程度上取决于您要运行的查询,因此您可能应该提及这一点。否则你的问题真的不具体;o/
  • 所以我有点过火了?业务表包含有关业务、名称、街道、电话的信息。我遇到的是每个邮政编码可以有几个城市,每个城市可以有一堆邮政编码。每个县都一样。每个城市都有相同的数据,但我不想复制所有信息。

标签: mysql database optimization


【解决方案1】:

“标准化,不要过度标准化”。

至少将“county.name”移动到City,除非一个城市可以跨越多个县。

我知道邮政编码和城市可能会以令人讨厌的方式重叠。 Los Altos 和 Los Altos Hills 都有 94022 和 94024。

【讨论】:

  • 我可以将 County.name 移动到 zip 表中。每个县将多次出现在表格中,从 1 到 15 次不等。城市、邮编和县以一些最糟糕的方式重叠。
猜你喜欢
  • 2011-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多