我有一个包含大约 5,000 行的表,其中包含地标上的地理坐标(纬度+经度)和位置信息(城市、州和国家/地区)。我使用这个表来检索离用户位置最近的位置(例如附近的公园等)。
至于现在,我通过对用户的 gps 坐标进行反向编码来过滤查询,以获得他的城市、州和国家(我正在使用 Android 的地理编码器)。但是,我开始意识到地理编码器偶尔会失败,因此我的云服务器上的 SQL 查询不会返回任何结果。
因此,我正在考虑跳过反向编码以确保每次都能获得良好的结果。我将只使用地理坐标来获得我想要的东西,如下所示:
SELECT p.placeId, p.name,( 6371 * acos( cos( radians($latitude) ) * cos( radians( p.latitude ) ) * cos( radians( p.longitude ) - radians($user_longitude) ) + sin( radians($user_latitude) ) * sin( radians( p.latitude ) ) ) ) AS distance ORDER BY distance
但是,我的桌子每天都在增加,最终可能会增长到 500,000。您是否认为当我的表扩展到该大小时,对每一行执行距离计算可能会成为性能问题?或者 500,000 行的表真的不是问题吗?