5. Cómo crear un índice adecuado
1. Consultas frecuentes
2. Alto grado de discriminación (dispersión)
3. Pequeña extensión
4. Cubrir tanto como sea posible Campos de consulta de uso común
Alto grado de diferenciación (dispersión): 1 millón de usuarios, básicamente 500.000 hombres y 500.000 mujeres cada uno, por lo que el grado de diferenciación es muy bajo.
El La longitud del índice es directa. Afecta el tamaño del archivo de índice, la velocidad de adiciones, eliminaciones y modificaciones, e indirectamente afecta la velocidad de consulta (ocupa más memoria). En el índice conjunto, los campos con mayor distinción se colocan primero
Para algunos campos largos que deben consultarse con frecuencia, la parte frontal se puede interceptar como índice
Ejemplo: como modismos en la tabla de modismos La longitud del campo es de aproximadamente 4-20.
Para los valores de la columna, corte partes de izquierda a derecha para construir el índice.
1: Cuanto más corto sea el corte, mayor será la repetición, menor será la distinción , y mejor será el efecto del índice. No es bueno
2: cuanto más larga sea la intercepción, menor será la repetición, mayor será la distinción y mejor será el efecto de indexación. Sin embargo, cuanto mayor sea la longitud del índice, mayor será el efecto del índice. mayor es el impacto: las adiciones, eliminaciones y cambios son consultas lentas e indirectas.
Por tanto, es necesario distinguir entre grado + longitud para lograr un equilibrio.
Método: intercepta diferentes longitudes, prueba la discriminación y elige una longitud adecuada
select (?(select count(distinct left(`word`,1)) from dict) / (¿seleccionar recuento(*) del dict)?)
seleccionar (?(seleccionar recuento(distinto a la izquierda(`palabra`,2)) del dict)/(seleccionar recuento(*) del dict)?
select (?(select count(distinct left(`word`,3)) from dict)/( select count(*) from dict)?)
Debido a innodb Según Según el principio del prefijo izquierdo, xxx% es válido, pero% xxx no es válido.
Cómo crear un índice para campos cuyo prefijo izquierdo no es muy distinguible
Por ejemplo, las URL tienen todos los prefijos
Consejo 1:
Almacene los datos al revés, como moc.udiab.www:ptth;
Consejo 2:
Utilice pseudo-hash p>
Agregue un campo url_crc32,
Utilice el algoritmo crc32 para convertir la URL a almacenamiento de números enteros y consulte el valor crc32 de la URL al realizar la consulta.
crc32 es un algoritmo hash que puede convertir cadenas en 32 números enteros.
Los resultados del cálculo de crc32 pueden repetirse, pero la probabilidad no es alta. Puede filtrar en consecuencia después de consultar
Índice de varias columnas
Considere los factores. columna Consulta eficiencia, diferenciación y al mismo tiempo debe combinarse con negocios específicos.