基于3D欧几里德距离查询的最有效方法是什么?

时间:2011-10-09 15:56:17

标签: mysql

我有一个带X,Y和Z坐标的MySQL表。该表的每一行对应三个空间中的特定点。目前,这些数据存储为三个单独的整数列,但如果需要,我可以更改它。

我想查询此表以找到给定输入点(x,y,z)的最近点。一种简单的方法是为表中的每一行选择SQRT(POW((TableName.X - x), 2) + POW((TableName.Y - y), 2) + POW((TableName.Z - z), 2)) AS Distance,然后选择Distance最小的行。

我知道MySQL有一个Point数据类型,但我不确定这是否有帮助。有谁知道计算欧几里德距离的有效方法?提前谢谢。

1 个答案:

答案 0 :(得分:2)

POW((TableName.X - x), 2) + POW((TableName.Y - y), 2) + POW((TableName.Z - z), 2)订单时没有SQRT

由于您只关心排序,并且平方根单调增加,您可以跳过平方根。没有SQRT,数学应该足够快。