Actualizar
A partir de MySQL 5.6
y más tarde, InnoDB
las tablas admiten Match... Against
.
El primero es mucho mejor. En MiISAM tablas utilizará un índice de texto completo contra esas columnas. El otro hará un escaneo completo de la tabla haciendo una concatenación en cada fila y luego una comparación.
LIKE
solo es eficiente si lo haces contra:
- una columna (no es el resultado de una función, a menos que su proveedor de base de datos particular admita índices funcionales (Oracle, por ejemplo) y usted los esté utilizando);
- el comienzo de la columna (es decir,
LIKE 'blah%'
a diferencia deLIKE '%blah%'
); y - una columna indexada.
Si alguna de esas condiciones no es verdadera, la única forma en que el motor SQL puede ejecutar la consulta es mediante un escaneo completo de la tabla. Esto se puede utilizar en aproximadamente 10-20 mil filas. Sin embargo, más allá de eso, rápidamente se vuelve inutilizable.