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

Permintaan hasil pencarian berbasis lokasi yang lambat

Anda dapat menggunakan ekstensi spasial mysql dan menyimpan lintang dan bujur sebagai tipe data titik dan menjadikannya indeks spasial. Dengan cara itu Anda dapat menyusun ulang koordinat di sepanjang kurva dan mengurangi dimensi serta melestarikan informasi spasial. Anda dapat menggunakan indeks spasial sebagai kotak pembatas untuk memfilter kueri dan kemudian menggunakan rumus harvesine untuk memilih hasil yang optimal. Kotak pembatas Anda harus lebih besar dari radius lingkaran besar. Mysql menggunakan rtree dengan beberapa indeks spasial dan contoh saya adalah tentang kurva z atau kurva hilbert:https://softwareengineering.stackexchange.com/questions/113256/what-is-the-difference-between-btree-and-rtree-indexing .Kemudian Anda dapat memasukkan koordinat geografis langsung ke kolom titik:http://dev.mysql.com/doc/refman/5.0/en/creating-spatial-values.html . Atau Anda dapat menggunakan tipe data geometri:http:// markmaunder.com/2009/10/10/mysql-gis-extensions-quick-start/ . Kemudian Anda dapat menggunakan fungsi MBRcontains seperti ini: http://dev.mysql.com/doc/refman/4.1/en/relations-on-geometry-mbr.html atau fungsi lainnya:http://dev.mysql.com/doc/refman/5.5/en/functions-for-testing-spatial-relations-between-geometric-objects.html . Oleh karena itu Anda memerlukan kotak pembatas. Berikut beberapa contohnya:

Berikut adalah contoh sederhana dengan tipe data titik:

    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

Saya tidak yakin apakah itu berfungsi karena menggunakan variabel radius dengan fungsi kotak pembatas. Menurut saya MBRwithin sedikit lebih sederhana, karena tidak memerlukan argumen apa pun:Mysql:Mengoptimalkan penemuan super node di kumpulan pohon bersarang .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Koneksi mySQL jarak jauh tidak dapat terhubung ke MySQL 4.1+ menggunakan kesalahan otentikasi tidak aman lama dari XAMPP

  2. KESALAHAN 1452:Tidak dapat menambah atau memperbarui baris anak:batasan kunci asing gagal

  3. Bagaimana cara menghapus MySQL sepenuhnya dengan file konfigurasi dan perpustakaan?

  4. mysqli masukkan id terakhir

  5. Hubungan MySQL