Untuk meningkatkan prestasi pertanyaan carian titik pada jadual besar dengan data geospatial, manfaatkan ciri geospatial MySQL. Dengan menggunakan indeks spatial MySQL, anda boleh meningkatkan kelajuan pertanyaan dengan ketara.
Langkah 1: Tukar kepada Jenis Data Geospatial
Tukar lajur latitud dan longitud anda kepada data geospatial MySQL jenis, GEOMETRI. Ini membolehkan anda memanfaatkan fungsi spatial dan pengindeksan yang disesuaikan khusus untuk data geografi.
Langkah 2: Cipta Indeks Spatial
Buat indeks spatial pada lajur GEOMETRI untuk mengoptimumkan pertanyaan yang melibatkan carian spatial. Indeks ini akan membolehkan pencarian titik yang cekap dalam jejari tertentu.
Langkah 3: Gunakan ST_Distance atau ST_Within
Untuk pertanyaan yang melibatkan pengiraan jarak atau kemasukan dalam jejari, gunakan fungsi ST_Distance atau ST_Within. Fungsi ini memberikan hasil yang tepat dan dioptimumkan untuk perbandingan geospatial.
Contoh:
SELECT *, ST_Distance(location, ST_GeomFromText('POINT(49.1044302 -122.801094)')) AS distance FROM stops WHERE ST_Within(location, ST_Buffer(ST_GeomFromText('POINT(49.1044302 -122.801094)'), 5)) ORDER BY distance limit 100
Nota Tambahan:
Sementara ST_Dwithin menyediakan pendekatan yang paling cekap untuk pertanyaan dalam jejari, ia pada masa ini tidak dilaksanakan dalam MySQL. Memantau keluaran masa hadapan untuk ketersediaannya adalah disyorkan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Pencarian Geolokasi dalam MySQL untuk Pertanyaan Spatial yang Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!