2

我正在创建一个包含两个主表的数据库:items, locations.

items表包含大约 3mill 记录,并且以每月 1mill 记录的速度增长。

locations表包含 50,000 个位置(名称、纬度、经度)并且大小不会改变。

除非我为每个项目记录复制位置内容,否则每次读取items表格都需要JOIN查看locations表格以找出项目所在的位置。我预计每个月都会对 items 表进行大约 5mill 查询。

数据库的搜索将由 Sphinx 执行,因此我无需担心 mysql 地理距离查询复杂化。

我的问题是,我会更好地为每个项目复制位置数据,还是执行 JOIN 语句?

提前致谢

4

2 回答 2

2

我认为如果你在's 表中有一个JOINbetweenITEMLOCATIONS一个外键会更好。ITEM

如果您为每个 tiem 复制数据,将会有太多的数据冗余

于 2013-07-26T07:22:44.123 回答
0

我们可以从学术角度讨论非规范化,但实践总是与理论不同。你如何设计你的结构也应该取决于用途——对你来说,我想这是响应时间。

加入 50k 表的成本不是很高,也不会花费太多时间,因为location大小没有增加

如果您有足够的可用空间,非规范化总是会改善您的查询,但会不必要地重复 50.000 条记录,另一方面,您会降低您正在寻找的速度。

于 2013-07-26T07:51:57.763 回答