哪个更安全/更好地运行?

时间:2011-10-27 13:04:52

标签: mysql optimization distance

我有451个坐标城市。现在我想计算每个城市之间的距离,然后按该距离订购一些结果。现在我有两个选择:

  1. 我可以运行一个循环来计算每个可能的城市组合的距离并将它们存储到一个表中,这将产生大约20万行。
  2. 或者,我可以不预先计算离开城市,然后在显示结果时(每页约30张),并分别计算每个城市的距离。
  3. 我不知道哪个会对性能有什么好处,但我更愿意选择第一个选项,在这种情况下我还有另外一个问题:有没有办法让我尽可能少的行?目前,我将可能性计为451^2,但我认为我可以将其除以2,因为City1-City2的距离与City2-City1相同。

    由于

2 个答案:

答案 0 :(得分:0)

如果您的城市表格或多或少是静态的,那么您绝对应该计算所有距离并将它们存储在单独的表格中。在这种情况下,您将拥有(451 ^ 2/2)行(只需确保City1的ID始终低于City2的ID(或另一种方式,并不重要))。

答案 1 :(得分:-1)

通常,单个MySQL查询的成本非常高,数学运算的成本非常低。特别是如果地图的比例很小并且所需的精度很低,那么你可以用度数之间的固定距离来计算,你计算的速度会更快。

此外,如果由于项目更改导致城市数量增加,您将遇到问题,因此您必须在数据库中存储的组合数量超出限制。

所以如果没有预先计算,你可能会更好。