Explicación detallada y análisis de principios del índice MySQL

Uso detallado del índice MySQL, análisis de principios

[Aviso Anticipado]
artículo de autor: Zhang Yaofeng en conjunción con su propia experiencia en la producción de acabado, que forma fácil de entender artículo
! La escritura no es fácil, Reproducido por favor especificar, gracias
código utilizando grandes volúmenes de datos Dirección: https://github.com/Mydreamandreality / sparkResearch


En el motor innodb, hay un total de cuatro tipos de índice, dos métodos de índice, principalmente hablo sobre la elección del índice en producción, la elección de la estructura de datos

Índice de aciertos, el plan de ejecución de SQL puede ver mi artículo anterior

Tipo de índice:

  • 1. Índice normal
  • 2. Índice único
  • 3. Índice de texto completo
  • 4. índice espacial espacial

Método de índice:

  • 1. El método del índice btree
  • 2. Método de índice hash

Tipos de índices detallados:

  • 1. En primer lugar, el tipo de índice Normal es el tipo de índice más comúnmente utilizado, y también es el tipo de índice más básico. No tiene restricciones. Puede configurar Normal para un campo o hacer indexación conjunta. Al realizar una consulta de condición única, consulta de condición múltiple u otras operaciones de combinación izquierda, el optimizador MySQL usará automáticamente este tipo de índice para optimizar la velocidad de la consulta, entonces si queremos saber si este índice es efectivo o no, podemos usar el explaincomando Verifiquemos el plan de ejecución de SQL. Para obtener una explicación detallada del plan de ejecución de SQL, consulte mi blog anterior.
  • 2. Único, como su nombre lo indica, es un índice único. El índice único es agregar una restricción única sobre la base del índice ordinario. Lo probé con datos de millones de niveles, y no hay mucha diferencia de rendimiento en comparación con Normal. El escenario de aplicación de este índice también es bastante bueno. Muchos, por ejemplo, sus datos tienen un campo que necesita ser indexado, y el valor de este campo debe ser único, entonces usar un índice único es una mejor opción
  • 3. La indexación de texto completo tiene sentido. En términos generales, todos necesitamos Elasticsearch. La indexación de texto completo en MySQL no se usa mucho, pero la unidad básica de indexación de texto completo es definitivamente una palabra. El tokenizer de MySQL no es Sepa si es tan poderoso como es. En resumen, el escenario de aplicación de este índice es el texto grande almacenado en un campo determinado, puede usar el índice de texto completo
  • 4. Índice espacial espacial, para ser honesto, esto nunca se ha utilizado, porque este índice no se puede usar en el motor innodb, debe usarse en el campo de tipo de datos espaciales en el motor MYISAM. Hay 4 tipos de datos espaciales en MYSQL, que son GEOMETRY, POINT, LINESTRING, POLYGON, MYSQL usa palabras clave ESPACIALES para expandirse, de modo que pueda usarse para crear un tipo de sintaxis de índice regular para crear un índice espacial, para crear una columna de índice espacial, debe declararse como NO NULL

Método de índice detallado:

Método de índice Este MySQL admite dos

  • 1. BTREE es un árbol B +, que debería ser el más utilizado
  • 2. Hash es la estructura de datos de K y V. Este tipo de búsqueda de rango y búsqueda de nodo no es muy compatible.

¿Qué es el índice?

¿Alguna vez has pensado en qué es el índice? Por qué la eficiencia de la consulta se vuelve tan alta después de agregar el índice razonable

De hecho, para decirlo sin rodeos, el índice es una estructura de datos, y su función es optimizar nuestra consulta, al igual que el índice implementado por el árbol B + en MySQL. El árbol B + es una estructura de datos. Cuando no agrega un índice, consulte los datos. Necesita escanear toda la tabla y luego hacer un escaneo completo de la tabla antes de hacer coincidir los datos. ¿Es esta una gran cantidad de datos? El índice es equivalente a la tabla de secuencia del diccionario. Si desea verificar ciertos datos, puede encontrar k directamente en la tabla de secuencia. La mejora de la eficiencia es muy alta.

Entonces, ¿por qué recomendamos usar la estructura de datos del árbol B +, el índice hash y el árbol B, ¿no es posible equilibrar completamente el árbol binario?

En primer lugar, hablemos de los índices hash. Este tipo de velocidad de búsqueda de índice es rápida, pero es incómoda porque no admite la búsqueda de rango, como mayor o igual a esto, usted piensa, ¿cómo soporta kv este tipo de consulta, por lo que rara vez se utiliza en casos generales? Índice de hash

Entonces, b-tree, de hecho, solo mire el nombre. Hay una gran diferencia entre b-tree y b + tree, no solo multiple +, de hecho, los nodos b + tree no-leaf son redundantes en los nodos leaf, y hay punteros entre los nodos leaf b + tree. Encontrar lo que es mayor o menor que será particularmente rápido, es una solución de espacio para el tiempo

El árbol binario equilibrado admite la búsqueda de rango, ¿por qué no usarlo, porque el número b + (el número b también puede ser) un nodo puede almacenar múltiples elementos, ¿qué causa esto? Piénselo de manera abstracta, tenemos dos árboles. Dado que el árbol b + almacena múltiples elementos, ¿es un árbol que es más bajo que el árbol binario, por lo que la búsqueda de elementos debería ser más rápida, reduciendo ciertas operaciones io?

. . . Espera, espera, el índice puede decir demasiados puntos, solo sé un poco, solo profundiza cuando estés libre

Nota de uso del índice

  • 1. El índice tendrá un efecto obvio cuando la cantidad de datos sea grande. Si la cantidad de datos en el sistema no es grande, no hay necesidad de generar un índice, desperdiciando espacio en el disco
  • 2. Aunque el índice aumentará la velocidad de consulta, reducirá la velocidad de actualización
  • 3. He escuchado algunas ideas peligrosas. . No sé si el índice es efectivo, de todos modos, agregué índices a todos los campos. . . Esto es demasiado aterrador, la indexación ocupará espacio en disco en el archivo de índice, puede compilar el índice normalmente, está bien, no puede usar en exceso el índice
  • 4. Elija el índice apropiado de acuerdo con su escenario comercial
59 artículos originales publicados · Me gusta 364 · Visitantes 100,000+

Supongo que te gusta

Origin blog.csdn.net/youbitch1/article/details/105431071
Recomendado
Clasificación