寻找一些聪明的sql策略来处理查找表

时间:2009-07-16 11:46:34

标签: mysql

我想存储表格中不同位置之间的距离。

CREATE TABLE `example` (
    `id` INT NOT NULL AUTO_INCREMENT ,
    `from` VARCHAR( 8 ) NOT NULL ,
    `to` VARCHAR( 8 ) NOT NULL ,
    `distance` DECIMAL( 6, 2 ) NOT NULL ,
    PRIMARY KEY ( `id` ) ,
    INDEX ( `from` , `to` )
 )

测量两点之间的距离时,将其插入表格中。获得“从”和“到”之间的距离显然非常容易。然而,'to'和'from'之间的距离完全相同。我不想再换一行来切换'到'和'从'。我也不想为这个表创建一个查找表来实现这一目标。

用于选择距离的sql将被调用很多,因此它需要是一个有效的查询。

我已经简化了表格,所以不要担心这些地方是varchars等。

任何人都有可以推荐的策略吗?

2 个答案:

答案 0 :(得分:4)

调用位置'A'和'B'。如果A< B,然后在'from'中搜索A,在'to'中搜索B,否则,在'from'中搜索B,在'to'中搜索A.插入值时的逻辑相同。

这样你只需存储一次组合,查询速度很快。

答案 1 :(得分:0)

我可以提出完全不同的建议。每个点都有相对于同一点的坐标,因此在给出两个点时将计算距离,而不是保存在DB中。

现在,如果这些是地图/图表上的点,那么就会有另一种解决方案。