sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo acelerar las consultas SELECT .. LIKE en MySQL en varias columnas?

Un índice no aceleraría la consulta, porque para las columnas textuales, los índices funcionan indexando N caracteres comenzando desde la izquierda. Cuando haces LIKE '%text%', no puede usar el índice porque puede haber una cantidad variable de caracteres antes del texto.

Lo que debería estar haciendo es no usar una consulta como esa en absoluto. En su lugar, debe usar algo como FTS (Búsqueda de texto completo) que MySQL admite para las tablas MyISAM. También es bastante fácil crear un sistema de indexación de este tipo para tablas que no sean MyISAM, solo necesita una tabla de índice separada donde almacene palabras y sus ID relevantes en la tabla real.

Actualizar

Búsqueda de texto completo disponible para tablas InnoDB con MySQL 5.6+.