Это руководство здесь крайне непонятно и даже не содержит некоторых примеров операторов SQL: http://dev.mysql.com/doc/refman/5.6/en/column-indexes.html
Другой способ перефразировать вопрос заключается в следующем:
Мы знаем, что можем иметь индекс с несколькими столбцами. Что делать, если индексы этих столбцов имеют другой тип? Скажем, первый столбец является пространственным, другой - полным текстовым поиском и т. Д. Можем ли мы сделать это в mysql? (Бонус: можем ли мы сделать это в mongodb, если вы знаете)
Скажем, у вас есть таблица myisam
Имеет столбец LATLONG, который содержит точки
Он имеет столбец FULLTEXT, который содержит слова в «бизнесе»
Сначала вы хотите выполнить запрос по LATLONG, а затем в соответствующем LATLONG, который хотите отфильтровать на основе столбца FULLTEXT.
Я полагаю, вам понадобится несколько столбцов индекса.
Но что такое команда SQL?
Как мы знаем, mysql всегда будет сначала использовать индекс fulltextsearch, если это возможно.
Этот запрос:
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
Занимает много времени, пока этот запрос:
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
быстрее, потому что я говорю mysql использовать вместо этого индекс latlong_2, который является пространственным запросом.
Ну, скажем, я хочу иметь индекс из нескольких столбцов. Latlong_2 и FULLTEXTSEARCH. Они от другого типа. LatLong_2 является пространственным, а FULLTEXTSEARCH является полнотекстовым поисковым индексом. Какую команду SQL я должен выполнить?