MYSQL. LIKE-consulta se vuelve demasiado tiempo si uso una variable

palíndromos:

Tengo la gran mesa con 5 millones de palabras. Necesito encontrar palabras que empiecen con la cadena dinámica. Pero cuando se utiliza LIKE-operador con una serie de variables, consulta se convierte en demasiado tiempo.

Por ejemplo, esta consulta tarda 1,3 segundos:

set @pattern = 'f%';
select * from words where Word like @pattern limit 100;

siguiente consulta toma 0,0 segundos:

select * from words where Word like 'f%' limit 100;

Pero ambas consultas realizan el mismo trabajo.

¿Cuál podría ser la razón por la cual las peticiones son muy diferentes en su duración? Cómo eliminar esta diferencia?

palíndromos:

Resultó que las variables tienen utf8mb4conjunto de caracteres (juego de caracteres por defecto de mi base de datos), pero la columna Wordtiene utf8charset.

Por lo tanto, todo lo que necesita hacer es charset convertir usando utf8:

set @pattern = CONVERT('f%' USING utf8);
select * from words where Word like @pattern limit 100;

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=395544&siteId=1
Recomendado
Clasificación