Este manual aquí no es muy claro y ni siquiera proporciona algunas declaraciones SQL de muestra: http://dev.mysql.com/doc/refman/5.6/en/column-indexes.html
Otra forma de reformular la pregunta es la siguiente:
Sabemos que podemos tener un índice con múltiples columnas. ¿Qué pasa si los índices de esas columnas son de diferente tipo? Digamos que la primera columna es espacial, la otra es búsqueda de texto completo, etc. ¿Podemos hacerlo en mysql? (Bonificación: ¿podemos hacerlo en mongodb, si lo sabes?)
Digamos que tienes una mesa de myisam
Tiene una columna LATLONG que contiene puntos.
Tiene una columna FULLTEXT que contiene palabras en el "negocio"
Desea consultar por LATLONG primero, y luego dentro del LATLONG coincidente que desea filtrar según la columna FULLTEXT.
Supongo que necesitarás un índice de múltiples columnas.
Pero, ¿cuál es el comando SQL?
Como sabemos, mysql siempre usará el índice de búsqueda de texto completo primero si es posible.
Esta consulta:
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
Lleva mucho tiempo, mientras que esta consulta:
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
es más rápido porque le digo a mysql que use el índice latlong_2 en su lugar, que es una consulta espacial.
Bueno, digamos que quiero tener un índice de múltiples columnas. Latlong_2 y FULLTEXTSEARCH. Están fuera del tipo diferente. LatLong_2 es espacial y FULLTEXTSEARCH es un índice de búsqueda de texto completo. ¿Qué comando SQL debo ejecutar?