El primer conse sano que se te puede dar es
no uses esta forma: Una esta:
o esta:
Por dos razones al menos:
1) Si mandas a buscar lo que comience cualquier cosa y termine con cualquier cosa, estás haciendo que MySQL
lea toda la tabla, sin excepciones, incluso si no encuentra nada.
Trata de imaginar lo que hace eso a la performance de una consulta...
2) Practicamente nadie pone como frase de búsqueda algo que esté entremedio. O pone el inicio o el final, pero no pone algo que vaya al medio de todo...
Es un tema de uso estadístico. Las excepciones no son importantes en esta afirmación.
Finalmente, si por alguna razón
necesitas usar ese tipo de búsqueda, es mejor usar indices de tipo FULLTEXT, más eficientes en ese tipo de consultas.
La única desventaja de esos índices es que sólo aplican a tablas MyISAM, que no tienen FK ni transacciones, por lo que en algunos sistemas no son una opción.
Otra cosa, a nivel de aplicación, muy útill, es restringir al usuario para que nunca se ponga a buscar textos de menos de cinco caracteres, ya que el nivel de coincidencias inútiles (datos-basura) sería muy elevado.
¿Como cuanto?
Bueno, imaginate que le dejas buscar cualquier cosa, y te pone "del".
¿Te haces una idea de la cantidad de coincidencias posibles?
enorme. Por eso los índices FULLTEXT no consideran las busquedas con menos de cierta cantidad de letras.