我有一个带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
数据类型,但我不确定这是否有帮助。有谁知道计算欧几里德距离的有效方法?提前谢谢。
答案 0 :(得分:2)
POW((TableName.X - x), 2) + POW((TableName.Y - y), 2) + POW((TableName.Z - z), 2)
订单时没有SQRT
。
由于您只关心排序,并且平方根单调增加,您可以跳过平方根。没有SQRT
,数学应该足够快。