現在、mysqlデータベースには100万弱の場所があり、すべてに経度と緯度の情報が含まれています。
クエリを使用して、1つの点と他の多くの点の間の距離を見つけようとしています。特に、1秒あたり100以上のヒットが必要なほど高速ではありません。
これのために、mysql以外のより高速なクエリまたはより高速なシステムはありますか?私はこのクエリを使用しています:
SELECT
name,
( 3959 * acos( cos( radians(42.290763) ) * cos( radians( locations.lat ) )
* cos( radians(locations.lng) - radians(-71.35368)) + sin(radians(42.290763))
* sin( radians(locations.lat)))) AS distance
FROM locations
WHERE active = 1
HAVING distance < 10
ORDER BY distance;
注:提供される距離はマイル単位です。キロメートルが必要な場合は、の6371
代わりに使用してください3959
。