该查询应该给我最接近的元素给定的:x
,:y
在直角坐标系。
SELECT `type`
FROM `mapgen_centers`
ORDER BY SQRT(POW((:x - `x`), 2) + POW((:y - `y`), 2))
LIMIT 1
目前平均需要0.002秒,这是可以的,但是我感觉这会更好,尤其是因为我当前非常频繁,非常频繁地触发它,因此脚本的整个执行过程需要花费几分钟。
可以(以及如何)通过标准MySQL安装中可用的任何方式(过程,函数,索引,配置等)对此进行优化。
除了删除平方根之外,我认为这不能做得更好。您应该检查的是执行时间实际上O(n)
是,因为您必须至少搜索一次所有元素,所以它必须是。这可以通过检查执行时间是否随数据库中表的大小线性增加来完成。因此,如果在100000行的表上花费10毫秒,那么在1000000行的表上应该只花费100毫秒...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句