Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/07/2014, 15:43
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: optimizando indices

No te confundas. INDEX y FULLTEXT son tipos de indice, VARCHAR es un tipo de columna.
Son cosas diferentes.

Para que se entienda mejor: Lo que ves en la definición del la tabla, que expresa INDEX, le dice a MySQL que debe crear un índice estandar, que es un indice de tipo B-Tree. Pero eso no es un tipo de columna.
Un índice INDEX puede ser creado sobre cualquier tipo de columna, en cambio un índice FULLTEXT es un indice de colecciones, que forzosamente debe ser creado sobre columnas de tipo texto, como VARCHAR, y sólo desde MySQL 5.6.3 aplica a tablas InnoDB. Antes sólo se usaban con las MyISAM..
Ahora bien, la performance de un indice INDEX dependerá mucho de la selectividad de los valores de la clave, que dependerán de TU tabla y de TUS datos. No hay un estandar. Se debe analizar en el caso específico.
Lo que sí te puedo aconsejar de entrada es no hacer consultas del tipo LIKE '%palabra%', porque usar asteriscos en ambos lados del valor ahce que MySQL descarte el índice y lea la tabla completa. Y eso es el peor escenario.
Por su lado los índices FULLTEXT son muy útiles, pero sólo si haces búsqueda con MATTCH() AGAINST(), las cuales sólo aplican a palabras completas, y no partes de palabras.

En definitiva, hay mucho por hablar cuando tratamos con performance de indices.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 02/07/2014 a las 17:20