座標間の最も近い距離を見つけるためのSQLクエリの実行速度が非常に遅い

0
投票

実際に機能する次のクエリがあります。緯度と経度のハードセットを取り込んで、郵便番号とともに最も近い座標のセットを見つけます。

実際に機能する次のクエリがあります。緯度と経度のハードセットを取り込んで、郵便番号とともに最も近い座標のセットを見つけます。

私が問題を抱えているのは、クエリの速度です。現在、実行には3.8秒かかり、チェックする座標は9000個あります。

問題が発生しているのは、クエリの速度です。現在、実行には3.8秒かかり、チェックする座標は9000個あります。

これをスピードアップする方法についてのアドバイスをいただければ幸いです。

これをスピードアップする方法についてのアドバイスをいただければ幸いです。
SELECT pcds, ROUND(MIN(distance), 4) AS distance FROM
(SELECT `postcode`.`pcds`,(
    6371 * acos (
      cos ( radians('51.4932392') )
      * cos( radians( `postcode`.`lat` ) )
      * cos( radians( `postcode`.`lng` ) -radians('-0.0846429') )
      + sin ( radians('51.4932392') )
      * sin( radians( `postcode`.`lat` ) )
    )
) AS distance
FROM postcode
ORDER BY distance
LIMIT 1
) AS First
SELECT pcds, ROUND(MIN(distance), 4) AS distance FROM (SELECT `postcode`.`pcds`,( 6371 * acos ( cos ( radians('51.4932392') ) * cos( radians( `postcode`.`lat` ) ) * cos( radians( `postcode`.`lng` ) -radians('-0.0846429') ) + sin ( radians('51.4932392') ) * sin( radians( `postcode`.`lat` ) ) ) ) AS distance FROM postcode ORDER BY distance LIMIT 1 ) AS First SELECT pcds、ROUND(MIN(distance)、4)AS distance FROM (SELECT `postcode`.`pcds`、( 6371 * acos( cos(ラジアン('51 .4932392 ')) * cos(radians( `postcode`.`lat`)) * cos(radians( `postcode`.`lng`)-radians( '-0.0846429')) + sin(ラジアン('51 .4932392 ')) * sin(radians( `postcode`.`lat`)) ) )AS距離 FROM郵便番号 距離で注文する 制限1 )AS First

ソース

sql mysql geospatial coordinates

-Akina

1 -Gordon Linoff

答えを待っています

興味があるかもしれません

© 2021   KonnichiwaSekai.Com