哪个更好?使用编程语言或使用数据库服务器进行计算

mon*_*nim 3 java mysql performance

假设我有一个位置表(纬度,经度),我希望将指定范围内的所有位置都放到我当前位置,我的问题更好:将计算包含在查询的where子句中,类似于,select * from locations where /* formula of cosines and sines of the latitude and longitude */ < distance.
我的第二选择是获取所有位置并在程序中进行本地计算.如果重要的话,我正在使用java和mysql

Uue*_*rdo 5

根据计算的数据和复杂程度,您可以尝试执行两者的混合.使用更简单,更不精确但更便捷的计算(能够利用指数)来减少发送回最终处理的结果.

例如,如果标准是"5英里远",而不是执行涉及几何函数的方程; 你可以计算一个边界框.检索该范围内的行,然后使用更复杂的函数排除"角".

或者,如果您的服务器功能强大,并且预计客户端计算速度相对较弱; 最好将这些计算卸载到服务器上.

编辑:另一种可能性是将更复杂的计算放在HAVING子句中,将更简单的计算保留在WHERE中,这样只需要在传递更简单,更友好的索引的过滤器上执行.

编辑2:给出一个通用的例子(因为我不熟悉使用long和lat;你的方程可能需要考虑地球"包裹").

SELECT * 
FROM theTable
WHERE x BETWEEN [minX] AND [maxX] 
AND y BETWEEN [minY] AND [maxY]
HAVING POW(x-[originX], 2) + POW(y-[originY], 2) <= POW([distance], 2)
;
Run Code Online (Sandbox Code Playgroud)