Crear índices en campos TEXT o BLOB

Como sabéis, MySQL no permite la creación de índices en campos de tipo TEXT o BLOB ni en sus derivados (TEXT, MEDIUMTEXT, LONGTEXT, BLOB, MEDIUMBLOB, LONGBLOB).

Sin embargo, la documentación de CREATE INDEX nos da la pista para hacerlo posible, que es limitar la longitud del valor a indexar.

De este modo, y si lo que necesitamos es por ejemplo en un WordPress, filtrar los valores del campo meta_value en la tabla wp_usermeta con una longitud de hasta 128 caracteres, podemos aplicar lo siguiente:

CREATE INDEX meta_value ON wp_usermeta(meta_value(128));

Cuando el filtro, requiera más de esos 128 caracteres, el índice no será válido, y por tanto se comportará como si no estuviera indexado. Pero si es menor o igual a ese tamaño, entonces se utilizará en las consultas, obteniéndose un incremento de rendimiento sustancial.


Crear índices en campos TEXT o BLOB

Deja un comentario