Este manual aqui é extremamente obscuro e nem fornece algumas instruções SQL de exemplo: http://dev.mysql.com/doc/refman/5.6/en/column-indexes.html
Outra maneira de reformular a pergunta é a seguinte:
Sabemos que podemos ter um índice com várias colunas. E se os índices dessas colunas forem de tipo diferente? Digamos que a primeira coluna seja espacial, a outra seja pesquisa completa, etc. Podemos fazê-lo no mysql? (Bônus: podemos fazê-lo no mongodb, se você souber)
Digamos que você tenha uma tabela de myisam
Possui uma coluna LATLONG que contém pontos
Possui uma coluna FULLTEXT que contém palavras no "negócio"
Você deseja consultar primeiro por LATLONG e, em seguida, dentro do LATLONG correspondente, deseja filtrar com base na coluna FULLTEXT.
Suponho que você precisará de um índice de várias colunas.
Mas qual é o comando SQL?
Como sabemos, o mysql sempre usará o índice fulltextsearch primeiro, se possível.
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
Demora muito tempo, enquanto 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
é mais rápido porque eu digo ao mysql para usar o índice latlong_2, que é uma consulta espacial.
Bem, digamos que eu quero ter um índice de várias colunas. Latlong_2 e FULLTEXTSEARCH. Eles estão fora do tipo diferente. LatLong_2 é espacial e FULLTEXTSEARCH é um índice de pesquisa de texto completo. Qual comando SQL devo executar?