Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Pengaturan tabel lintang dan bujur MySQL

Anda harus menyimpan poin dalam satu kolom tipe data Point yang dapat Anda indeks dengan SPATIAL index (jika tipe tabel Anda adalah 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

Ini akan secara drastis meningkatkan kecepatan kueri seperti "temukan semua dalam radius tertentu".

Perhatikan bahwa lebih baik menggunakan TM biasa koordinat metrik (timur dan utara) bukan kutub (lintang dan bujur). Untuk jari-jari kecil, mereka cukup akurat, dan perhitungannya sangat disederhanakan. Jika semua titik Anda berada dalam satu hemishpere dan jauh dari kutub, Anda dapat menggunakan satu meridian pusat.

Anda masih dapat menggunakan koordinat kutub tentunya, tetapi rumus untuk menghitung MBR dan jaraknya akan lebih kompleks.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mempercepat (Bulk) Masukkan ke MySQL dengan Python

  2. PDO::rowCount VS COUNT(*)

  3. hierarki mysql bergabung sendiri, ambil semua subkategori

  4. Bagaimana cara menambahkan bobot ke tabel MySQL dan memilih nilai acak menurut ini?

  5. Cara menggabungkan tabel bersama - SQL