Manual ini di sini sangat tidak jelas dan bahkan tidak memberikan beberapa contoh pernyataan SQL: http://dev.mysql.com/doc/refman/5.6/id/column-indexes.html
Cara lain untuk mengulangi pertanyaan adalah sebagai berikut:
Kami tahu kami dapat memiliki indeks dengan banyak kolom. Bagaimana jika indeks kolom-kolom itu berbeda jenis? Katakanlah kolom pertama spasial, yang lain adalah fulltextsearch, dll. Bisakah kita melakukannya di mysql? (Bonus: dapatkah kami melakukannya di mongodb, jika Anda kebetulan tahu)
Katakanlah Anda memiliki meja myisam
Ini memiliki kolom LATLONG yang berisi poin
Ini memiliki kolom FULLTEXT yang berisi kata-kata di "bisnis"
Anda ingin melakukan query dengan LATLONG terlebih dahulu, dan kemudian dalam LATLONG yang cocok Anda ingin memfilter berdasarkan pada kolom FULLTEXT.
Saya kira Anda perlu beberapa indeks kolom.
Tapi apa perintah SQL?
Seperti yang kita ketahui, mysql akan selalu menggunakan indeks fulltextsearch terlebih dahulu jika memungkinkan.
Kueri ini:
SELECT BusinessID as ID ,
111151.29341326*SQRT(pow(-6.186751-X(LatLong),2)+pow(106.772835-Y(LatLong),2)*0.98838574205337) AS Distance from tableauxiliary
use index (LatLong_2)
WHERE
MBRContains(
GeomFromText (
'MULTIPOINT(-6.1934985598076 106.76604791159,-6.1800034401924 106.77962208841)'
),
Latlong)=1
AND Prominent >15
AND MATCH FullTextSearch AGAINST ('sea*' IN BOOLEAN MODE)
ORDER BY
Distance
LIMIT
0, 45
Butuh waktu lama, sementara permintaan ini:
SELECT BusinessID as ID ,
111151.29341326*SQRT(pow(-6.186751-X(LatLong),2)+pow(106.772835-Y(LatLong),2)*0.98838574205337) AS Distance from tableauxiliary
use index (LatLong_2)
WHERE
MBRContains(
GeomFromText (
'MULTIPOINT(-6.1934985598076 106.76604791159,-6.1800034401924 106.77962208841)'
),
Latlong)=1
AND Prominent >15
AND MATCH FullTextSearch AGAINST ('sea*' IN BOOLEAN MODE)
ORDER BY
Distance
LIMIT
0, 45
lebih cepat karena saya meminta mysql untuk menggunakan indeks latlong_2 sebagai gantinya, yang merupakan kueri spasial.
Nah, katakan saya ingin memiliki indeks beberapa kolom. Latlong_2 dan FULLTEXTSEARCH. Mereka dari tipe yang berbeda. LatLong_2 bersifat spasial dan FULLTEXTSEARCH adalah indeks pencarian teks lengkap. Apa perintah SQL yang harus saya jalankan?