我正在创建一个包含两个主要表的数据库:items、locations。
items表包含大约3次记录,并且正在以每月1次记录的速度上升。
locations表包含50,000个位置(名称、纬度、经度),大小不会改变。
每次读取items表都需要一个JOIN到locations表,以找出项目的位置,除非我复制每个项目记录的位置内容。我预计每个月都会对items表进行大约5Miller查询。
对数据库的搜索将由Sphinx执行,因此我不需要担心mysql地理距离查询的复杂性。
我的问题是,复制每个项目的位置数据还是执行联接语句更好?
提前感谢
发布于 2013-07-26 07:22:44
我认为最好是在ITEM和LOCATIONS之间加上一个外键在ITEM的桌子上。
如果每次重复数据,就会有太多的冗余数据。
发布于 2013-07-26 07:51:57
我们可以从学术的角度来讨论非道德化,但实践总是与理论不同的。你如何设计你的结构也应该取决于使用-对你来说,我想这是响应的时间。
加入50k表并不是很昂贵,而且不会花费那么长的时间,因为location大小没有增加。
如果你有足够的自由空间,去造假将总是改善你的查询,但不必要地重复50.000的记录,另一方面,你将失去你正在寻找的速度。
https://stackoverflow.com/questions/17875167
复制相似问题