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

緯度経度による半径検索

    SQL 2008 を使用しているため、ネイティブの地理空間機能の使用を検討してください。次のような素晴らしいことができます:

    • ポイントを表す地理タイプの永続的な計算列を作成します。
    • 計算列に空間インデックスを作成します。これは yourPoint.STDistance(@otherPoint) <= @distance のようなものになります 効率的

    そのように:

    alter table [yourTable] add [p] as geography::Point(Latitude, Longitude, 4326) persisted;
    create spatial index [yourSpatialIndex] on [yourTable] ([p])
    
    declare @Latitude float = <somevalue>, @Longitude float = <somevalue>;
    declare @point geography = geography::Point(@Latitude, @Longitude, 4326);
    declare @distance int = <distance in meters>;
    
    select * from [yourTable] where @point.STDistance([p]) <= @distance;
      

    1. PostgreSQLで序数を作成する方法

    2. mysqlのGrailsトランザクションsetSavePointメソッドが例外を引き起こします

    3. 1つの列に複数の行値がある複数の行を1つにマージします

    4. byte[]の適切なHibernateアノテーション