MySQL关系表-如何使其更小?

MySQL关系表-如何使其更小?,mysql,Mysql,我正在我们的网站上做一个POI选项,使用一个具有约1400万行的POI表。我想将这些POI与另一个表中的数据连接起来,该表包含大约200万行(它们是ads) 我试图制作第三个表(链接表),它存储“ads”和“poi”之间的关系,但是这个表非常大。(约6亿行,仍在计算中)。第三个表只包含3行,一个唯一标识符、ad_id和poi_id。有没有其他方法来存储这样一个资源不太密集的简单关系 编辑 我正在考虑按纬度对POI重新排序,并重新创建它们的ID,然后按以下方式将关系存储在表中: relation_

我正在我们的网站上做一个POI选项,使用一个具有约1400万行的POI表。我想将这些POI与另一个表中的数据连接起来,该表包含大约200万行(它们是ads)

我试图制作第三个表(链接表),它存储“ads”和“poi”之间的关系,但是这个表非常大。(约6亿行,仍在计算中)。第三个表只包含3行,一个唯一标识符、ad_id和poi_id。有没有其他方法来存储这样一个资源不太密集的简单关系

编辑

我正在考虑按纬度对POI重新排序,并重新创建它们的ID,然后按以下方式将关系存储在表中:

relation_id   ad_id   poi_start_id   poi_end_id
其中,poi_end_id可以为空,如果为空,则只有poi_start_id相关,否则,poi_start_id和poi_end_id之间的所有内容都相关


您认为,这会加快在巨大表格中的搜索,并使表格大小变小吗?

如果POI可以有多个广告,这是创建关系的唯一方法。但是,对于索引良好的ID字段(覆盖索引),这应该不是问题。不知道它是否适合您的模型,但您也可以将您的广告分组到一个新表中(按区域?类型?位置?),并使用链接表中的组,而不是直接使用您的广告。我不知道,这不会导致大量与我的查询无关的数据吗?我想实现的是,显示一个特定点周围5英里半径内的每个POI。你看过MySQL地理空间扩展吗?