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 la parte de izquierda a derecha para construir el índice
1: Cuanto más corto sea el corte, mayor será la repetición, menor será el distinción y mejor será el efecto del índice. No es bueno
2: cuanto más larga sea la intercepción, menor será la duplicación, mayor será la distinción y mejor será el efecto de indexación. mayor será el impacto: las consultas de adición, eliminación y modificación son lentas e indirectas.
Por tanto, es necesario distinguir entre grado + longitud para lograr un equilibrio.
Método: intercepte diferentes longitudes, pruebe la distinción y elija una longitud adecuada
select ((select count(distinct left(`word`,1)) from dict)/ ( seleccione el recuento(*) del dict))
seleccione ((seleccione el recuento(izquierda distinta(`palabra`,2)) del dict)/(seleccione el recuento(*) del dict))
select ((select count(distinct left(`word`,3)) from dict)/( select count(*) from dict))
Debido al principio de prefijo izquierdo de innodb, 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.