Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

pencarian radius berdasarkan garis lintang / bujur

Karena Anda menggunakan SQL 2008, pertimbangkan untuk menggunakan kemampuan geospasial asli. Anda dapat melakukan hal-hal mewah seperti:

  • Buat kolom terkomputasi dari jenis geografi yang mewakili poin Anda.
  • Buat indeks spasial pada kolom yang dihitung. Ini akan membuat hal-hal seperti yourPoint.STDistance(@otherPoint) <= @distance efisien

Seperti ini:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mendapatkan nilai peningkatan otomatis dari baris terakhir di sisipan

  2. Pemicu SQL Server – Bagian 2 Pemicu DDL &LOGON

  3. Perbaiki SQL Database Recovery Pending Access Masalah Ditolak

  4. Fungsi Bernilai Tabel Multi-pernyataan vs Fungsi Bernilai Tabel Sebaris

  5. Memilih Prosesor untuk SQL Server 2012