当下有一个需求,在用户传入一个坐标之后,后端需要给出某一距离范围内的所有店铺,并根据位置距离排序。对于此需求有两种解决方式,其一是利用MySQL的ST_GeomFromText进行地理查询;其二是将所有店铺数据读取,再利用GlobalCoordinates等三方库进行数据筛选排序。在具体实现的过程中,哪一种方式效率比较高
仅供参考:
一般来说,利用MySQL的ST_GeomFromText进行地理查询应该更加高效,因为这种方式可以让MySQL直接利用空间索引进行搜索,而不需要将所有店铺数据读取到内存中再进行筛选。
如果您采用MySQL的ST_GeomFromText进行地理查询,建议在数据库中创建一个空间索引,以加快查询速度。通过使用空间索引,MySQL将会自动过滤掉距离范围之外的店铺,并按照距离排序。这样,查询结果集中只包含您需要的数据,可以有效减少数据传输量,提高查询效率。
相比之下,将所有店铺数据读取到内存中再进行筛选排序的方式,需要先将所有店铺数据读入内存,然后再对数据进行筛选和排序。如果数据量较大,可能会导致内存消耗过高,甚至导致系统崩溃。
综上所述,使用MySQL的ST_GeomFromText进行地理查询应该是更好的选择,可以提高查询效率,并减少内存消耗。
在这种情况下,利用MySQL的ST_GeomFromText进行地理查询是更高效的解决方式。因为使用MySQL的ST_GeomFromText进行地理查询可以直接使用MySQL的空间索引,而不需要在程序中读取所有店铺数据后再进行筛选和排序,这可以大大减少数据传输和处理的时间。
而使用GlobalCoordinates等三方库进行数据筛选排序,则需要程序读取所有的店铺数据,再进行筛选和排序,这样会浪费更多的时间和计算资源。
不知道你这个问题是否已经解决, 如果还没有解决的话: