Como la optimización de consulta difusa de MySQL

fuente original: https: //www.cnblogs.com/whyat/p/10512797.html

% Xxx% de este modo por una pequeña cantidad de datos, que cayó de uso gratuito, pero la gran cantidad de datos, vamos a experimentar el rendimiento problema de consulta, como el coche, ya que la pendiente de la panza dura el envejecimiento, y de esta manera y no utilizar el índice, pero el escaneo completo de tabla

consultas difusas MySQL eficientes en lugar de como

而对于xxx% 或者%xxx方式,explain一下可以发现查询使用到了索引,性能提升了不少,当然这种方式不适用与所有的查询场景。
可以采取以下的函数进行查询。
LOCALIZAR ( 'substr', str, pos) método 
POSITION ( 'substr' en el campo) método 
INSTR (str, 'substr') Método

Si la relación de eficiencia de la consulta: tabla.campo como 'AAA%%' en su lugar puede localizar ( 'AAA', tabla.campo)> 0

  Volver subcadena substr en aparece por primera vez la cadena str, si no str dentro substr, retorno de 0. El
MySQL> Seleccione el LOCALIZAR ( 'bar', 'foobarbar'); -.> 4 MySQL> Seleccione el LOCALIZAR ( 'XBar' , 'parametro'); -> 0

Esta función es fiable multi-byte.

Subcadena substr devuelve la posición de la primera aparición de la cadena str, a partir de las posición pos. Si no substr en str, devuelve 0.
mysql> select LOCALIZAR ( 'bar' , 'foobarbar', 5); -> 7

 

MySQL como método de consulta difusa para mejorar la eficiencia de la labor maravillosa

Una tabla de datos, probablemente, alrededor de 400.000, con un título como campo de consulta difusa, muy lentamente, el índice de campo de título se ha establecido, MySQL someTitle% de tales consultas difusas sobre la premisa de que el índice es muy rápido.
Así pues, siguiendo estos dos sql declaración diferencia es muy grande 
$ SQL1 = "...... título como someTitle %" ( llamadas 0,001 segundos)
$ SQL2 = '% someTitle% ...... título como' (llamadas 0,8 segundos)
que la eficacia de dos diferencia 800 veces, que es ah significativa.
Así que tengo una idea: la premisa del método sin palabra de la memoria del campo de título, además de un prefijo especial, como "im_prefix", como un título de registro = "Me dirigía al partido", cuando se almacena en almacenado como "im_prefix que se dirigía a la fiesta."
Cuando esta forma, queremos búsqueda difusa "parte del título" las palabras clave, se puso sql escribe así:
$ SQL1 = "...... como el título im_prefix %% parte del título" (se tarda 0.001 segundos), la pantalla frontal cuando los datos son naturales para llevarse el título de filtrar "im_prefix" el prefijo

Supongo que te gusta

Origin www.cnblogs.com/lvchengda/p/12532193.html
Recomendado
Clasificación