sql >> データベース >  >> RDS >> Mysql

MySQLの緯度と経度のテーブルの設定

    ポイントは、データ型Pointの単一の列に格納する必要があります SPATIALでインデックスを作成できます インデックス(テーブルタイプがMyISAMの場合 ):

    CREATE SPATIAL INDEX sx_place_location ON place (location)
    
    SELECT  *
    FROM    mytable
    WHERE   MBRContains
                   (
                   LineString
                           (
                           Point($x - $radius, $y - $radius),
                           Point($x + $radius, $y + $radius)
                           )
                   location
                   )
            AND Distance(Point($x, $y), location) <= $radius
    

    これにより、「特定の半径内ですべてを検索する」などのクエリの速度が大幅に向上します。

    プレーンなTMを使用する方がよいことに注意してください 極座標(緯度と経度)ではなく、メトリック座標(東と北)。小さな半径の場合、それらは十分に正確であり、計算は大幅に簡略化されます。すべてのポイントが1つのヘミシュペールにあり、極から離れている場合は、単一の中央子午線を使用できます。

    もちろん極座標を使用することもできますが、MBRの計算式は 距離はより複雑になります。



    1. PDOを使用してMySQLから数値型を取得するにはどうすればよいですか?

    2. データベースでPIIを分類、検索、マスクする方法…

    3. JSON_PRETTY()–MySQLで読みやすくするためにJSONドキュメントをフォーマットする

    4. データセットビューのテーブルで時間を節約するための25のMicrosoftAccessショートカット