Entrevista MySQL-Index

Prefacio

Sin prólogo, no digas tonterías, solo comienza la entrevista

Comienza la entrevista

Entrevistador: ¿Qué es un índice?

  • El índice es una estructura de datos, una estructura de datos que mejora la eficiencia de recuperación. Como árbol B +, hash

Entrevistador: Cuénteme sobre su comprensión de los árboles B +

  • El árbol B + es un árbol de ramas múltiples equilibrado. En comparación con el árbol B, los datos del árbol B + solo tienen nodos de hojas. Los nodos hoja forman una lista vinculada, por lo que se pueden admitir consultas de rango. La eficiencia de consulta del árbol B + es: O (logH), H es la altura del número B +.

Entrevistador: ¿Por qué InnoDB usa el árbol B + como estructura de índice en lugar del árbol B?

  • En primer lugar, el árbol B + se compara con el árbol B. Dado que los nodos que no son hojas también almacenan datos, los nodos que no son hojas pueden almacenar menos páginas de memoria. Con la misma cantidad de datos, la altura del árbol B es mayor que la del árbol B +, por lo que se requieren más tiempos de IO, lo que hace que la eficiencia general del árbol B sea más lenta que la del árbol B +.
  • El árbol B no admite consultas de rango, porque los nodos hoja del árbol B no forman una lista vinculada.
  • Los datos del árbol B + están en los nodos hoja y el rendimiento de la consulta es más estable.

Árbol B (imagen tomada de Internet)
Árbol B + (imagen tomada de Internet)

Entrevistador: ¿Cuáles son las categorías del índice?

  • Índice de clave primaria, índice de clave no primaria (índice normal, índice único, índice conjunto)

Entrevistador: ¿Cuál es la diferencia entre un índice de clave primaria y un índice de clave no primaria?

  • En InnoDB, el índice de clave principal también se denomina índice agrupado, y el nodo hoja almacena toda la fila de datos.
  • En InnoDB, los índices de clave no primaria también se denominan índices secundarios, y el contenido de los nodos hoja es el valor de la clave primaria.

mysql> create table T(
id int primary key, 
k int not null, 
name varchar(16),
index (k))engine=InnoDB;

Índice de clave primaria e índice de clave no primaria

Entrevistador: ¿Sabe cómo devolver el formulario?

  • Si la declaración se selecciona * de T donde ID = 300, es decir, el método de consulta de clave principal, solo necesita buscar el árbol B + de ID;
  • Si la oración se selecciona * de T donde k = 3, es decir, el modo de consulta de índice normal, primero debe buscar en el árbol de índice k, obtener el valor de ID 300 y luego volver a buscar en el árbol de índice de ID. Este proceso se llama volver a la mesa.
  • En otras palabras, las consultas basadas en índices de claves no primarias deben escanear un árbol de índices más. Por lo tanto, deberíamos intentar utilizar consultas de clave primaria en nuestras aplicaciones.

Entrevistador: ¿El principio del índice de aciertos?

  • Siempre que satisfaga el "principio del índice de cobertura" o el "principio del prefijo más a la izquierda", se puede utilizar el índice.
  • Para obtener más información, consulte Reglas de uso del índice de MySQL

Entrevistador: ¿Qué es un índice de cobertura?

  • Cubrir índice significa que la ejecución de una instrucción de consulta solo se puede obtener del índice, sin leer de la tabla de datos. También se puede decir que se logra la cobertura del índice.

Entrevistador: La última pregunta, ¿cómo resolver una consulta lenta?

  • Localice el problema: en primer lugar, al consultar el registro lento, determine qué instrucción SQL tiene la consulta lenta
  • Analice el problema: a continuación, generalmente hay dos razones para la lentitud de SQL, una es que el índice no se usa y la otra es el uso del índice incorrecto
  • Resuelva el problema: si no se usa el índice, entonces podemos usar explicar para analizar la declaración SQL y determinar si se usa el índice. Si usa un índice, ¿usa el índice correcto? Si usa el índice incorrecto, use forzar índice () para forzar el uso de un índice. Si el entrevistador continúa preguntándole, ¿por qué utilizó el índice incorrecto? En pocas palabras, el índice que InnoDB elige usar se determina en función de un valor, y este valor se calcula en función del valor de la muestra. Debido a que es una muestra, el muestreo es relativamente aleatorio, por lo que no es imposible cometer errores.

Entrevistador: Felicitaciones por ingresar a la siguiente ronda de entrevistas al final de la entrevista.

para resumir

De hecho, todavía hay muchos puntos de conocimiento sobre el índice, que no se ampliarán aquí.

  • Qué campo elegir para indexar
  • Índice de empuje hacia abajo
  • El significado del campo de explicación, cómo sintonizar según el campo.

Hablar

Muchas gracias por ver esto, si crees que el artículo está bien escrito, por favor presta atención y compártelo (es muy, muy útil para mí).
Si cree que el artículo debe mejorarse, espero sus sugerencias para mí, por favor deje un mensaje.
Si quieres ver algo, espero tu mensaje.
¡Su apoyo y apoyo son la mayor motivación para mi creación!

Referencia

  • "MySQL de alto rendimiento"
  • "45 conferencias sobre el combate real de MYSQL"

Supongo que te gusta

Origin blog.csdn.net/Aaron_Tang_/article/details/114676877
Recomendado
Clasificación