Índice de diversión


MySQL 
índice es de ayuda MYSQL llegar de manera eficiente los datos de estructura de datos en una base de datos relacional, el índice se encuentra en el almacenamiento en disco duro
métodos de indexación: árbolB hachís, extraño que la elección no puede hachís, explicó hash de soporte para MySQL, MySQL subyacente
innodb soportes de motor de hash, pero es optimización automática, manual de lata no interviene
palabra clave explico: se puede ver el tipo de consulta en la consulta por tipo precedido por la palabra clave EXPLAIN

Rango consulta
IAH (índice hash adaptativo)) hay un defecto fatal puede causar aborto involuntario de la justicia, si su base de datos es una biblioteca estadística, la instrucción LIKE, el 80% consulta de combinación si está incluida, podría dar al sistema una carga, se recomienda cerrarla ajustar manualmente adaptive_hash_index innodb mundial = ON, oFF


Por ejemplo, si el incremento de la conversión Id 1,2,3 de hash puede ser 100000,223232,2333030, esto no se completa la consulta, por lo que el hash fue eliminado

Binary Tree: un nodo raíz genera dos pequeños Ponga la izquierda, poner una gran mano derecha, pueden formar un unilateral (tanto a la derecha oa la izquierda)
árbol binario balanceado AVL, el rostro de un millón de datos, el nivel de datos es demasiado alto, lo que resulta en IO demasiadas veces, decidió velocidad de las consultas demasiado lento
así, estos dos árboles no pueden alcanzar el máximo rendimiento

los datos del disco MySQL leen la página de tiempo se basa (página) como la unidad básica, tales como la adquisición de datos, no es exactamente un hit estos datos, sino más bien para obtener un bloque de disco (IO e interacción de disco mecanismos: golpe imprecisa, sino más bien, un bloque). El tamaño de cada bloque de disco para obtener predeterminado 16K, tenemos que asumir que los datos sólo es 20byte, será:
crear una pérdida grande de
datos válidos golpe demasiado poco


Árbol B (múltiples árboles de búsqueda, equilibrado árbol de búsqueda con muchas ramas)
multicanal, con muchas ramas, los datos efectivos golpe muy mejorado

Creación de tablas de campo suficiente en la línea
cada vez que carga el valor por defecto de 16 K, suponiendo que el campo representó el 10 400 20 800 campo representaron
menos número de líneas de carga 16 / 400,16 / 800 = cada carga, no es lo mismo.

Mostrar variables como 'innodb_page_size'; el acceso al tamaño de página de consulta de base de datos, el valor predeterminado es de 16 K, pueden ser modificados

A menudo ya no puede convertirse en campo indexado, desde el punto de vista Btree conseguir la fisión, insertar un índice, el nodo BTREE será una gran cantidad de cambios, si el campo de índice está en constante cambio, que se utiliza para mantener un índice de consumo puede ser mayor que la optimización índice de tiempo trae


Árbol B + 

Ordenar fuerte
basada en el índice de barrido de la biblioteca, la tabla de capacidades barrido
árbolB IO número indefinido de veces, B + árbol tres veces cada (tiempo de retorno de datos para estabilizar IO), la experiencia del usuario tendrá mejor (estable)

B + árbol cuenta con
1, los nodos que no son hojas no guarda la información de base de datos, palabras clave y guardar sólo la nodo hijo referencia
2, todos los datos almacenados en los nodos de la hoja
3, la izquierda los datos de sección cerrada
4, los datos ordenada nodo hoja natural, hay referencias y los nodos adyacentes y relaciones de orden

Por eso, MySQL utilizará B + árbol como la razón de la estructura de base de datos subyacente


mostrar variables como 'datadir'; ver el directorio de archivos de datos

No myisam motor dentro del índice es la primaria o secundaria
conocida Identificación está indexado
seleccionar * de usuario donde id =? y? name =
con dos índices hacer?
Sólo un índice, además de, o, una instrucción SQL sólo se utilizará un índice (MySQL determinará qué índice para un mejor uso, MySQL será la optimización de motor subyacente, también dijo que si el nombre del pedido, las condiciones de identificación de intercambio sólo se un id)


INNODB
Una tabla puede tener un índice agrupado, el orden físico de la mesa porque sólo hay un caso en el que la misma secuencia se llama índice de agregación (índice de la fila y el orden físico de los datos, y la pieza de Identificación del ID de información representativa del mismo orden )
índice agrupado tiene una recuperación más rápida
 en InnoDB, sólo la clave primaria es el índice agrupado, otros índices se agregan índice no
¿Qué significa? Innodb que es además de la clave primaria de la nodo hoja se almacena en los datos (nombre, edad, sexo ..)
es el valor de clave principal de otro índice almacenado en el nodo de hoja, nombre como un índice, un proceso de consulta es ir a un adquiere nodo hoja valores de clave principal, y luego para adquirir el contenido basado en la clave principal, el regreso

Si la tabla no tiene su propio índice, el motor InnoDB de MySQL del mismo modo que se agregaría una clave principal. MySQL de nuevo forzar un rowid, 6 bits tipo int

MyISAM cosas no son seguros, aunque sólo sea para seleccionar una declaración de clase, puede elegir
de apoyo cosas InnoDB mejor, así ampliamente utilizados

Si hay varios código de campo nombre de edad
y luego elegir cuál es el mejor como un índice
puede formularse recuento (distinta col (campo)): recuento (col) Esta columna hace valores no duplicados: Este valor total de la columna de
seleccionar la cuenta (distinto col ( campo)) de la tabla: select count ( COL) de la tabla de
relación de la mejor

También puede utilizar herramientas, https: //www.cs.usfca.edu/~galles/visualization/BPlusTree.html

mirada de repetición

¿Qué es un índice de bueno? Discreta mayor sea el mejor, el mejor repetibilidad
repetibilidad demasiado, incluso el equivalente de un escaneo completo de tabla, que este índice no es válido

seleccionar * de usuario, donde nombre como = '% Petter'

Si el nombre de Jim eran Petter JSON lilin, tomar definitivamente el índice
si el nombre fuera petter1 petter2 petter3 .... que también reciben el índice de él? La respuesta no es ir
por lo que no desaparecerá este índice SQL, dependiendo de la situación puede ir, no puede ir

Índice índice separado (índice común especial) estableció una palabra clave
Crear índice idx_name (nombre)
índice común más de una palabra clave
crear idx_name_ph índice (nombre, phoneNum, edad)
cuestiones
seleccionar * de usuario, donde name = " Perter" y phoneNum> "13333333" y de edad = 18
cuando los usos consulta que los índices?


Índice Características: gama completa después de un fallo
phoneNum> "13333333" es obtener una serie de datos

Este utiliza el nombre de dos años de edad índice


¿Cómo seleccionar el siguiente índice de dos sql de
la SELECT * del usuario el nombre DONDE =
el SELECT * del usuario del WHERE nombre =? = Y phoneNum?

crear idx_name índice (nombre)

crear idx_name_ph índice (nombre, phoneNum)

Seleccione el segundo índice común


índices Recubrimientos
puede devolver el bienestar columna consultan directamente a través de la entrada de índice información

motor innodb usuario Tabla

Índice de Identificación del PK  

índice común
nombre de IDX, phoneNum, 
ÚNICA userNum índice único

Cuál de las siguientes SQL que se utiliza un índice que cubre?
seleccione userNum de usuario, donde userNum =?
aquí para regresar userNum por consulta userNum, no es necesario para obtener el valor de la clave principal para ir a través de los nodos no agrupados hoja del índice, vaya a la clave principal del nodo hoja para obtener consulta de información
que volver consulta de información directamente a través del índice, por lo es un índice que cubre

seleccionar * de usuario donde nombre =?
Aquí consulta es *, es decir, todos los campos, a través de nombre de índice común para consultar todos los campos, hospedaremos Identificación clave principal para adquirir, también dijo que el índice de nombres para encontrar el nodo hoja donde el valor de la identificación, luego de vuelta a la mesa de operación valor de ID, vaya a la clave principal del nodo hoja para obtener todos los otros campos de información que volver. Así que no hicimos uso de un índice que cubre

SELECT ID, nombre de usuario, donde nombre =?
se utiliza aquí para abarcar el índice debido a nombre de nodo hoja del índice para mantener el valor de los valores de ID y nombre de la clave primaria, y pueden ser devueltos directamente, no es necesario volver a la mesa de operaciones

seleccionar phoneNum de usuario donde nombre =?
Esto también es cubierto por el índice, ya que la diferencia entre el índice de conjunto con índice separado es: número de índice de campos, nodos hoja almacenará los valores de varios campos y valores de la clave principal, pueden ser devueltos directamente


índice de Samsung

Coincidencia de la primera clave de índice donde la fila mejor selectividad trasera tan poco como sea posible (para evitar los datos de consulta seleccionados de nuevo)
una segunda reordenación evitado (porque los nodos de datos B + árboles de hoja están clasificadas de forma natural, Ordenar nuevo consume en el rendimiento de la memoria, si las necesidades del negocio, no hay manera, pero esto es sin duda que deben evitarse tanto como sea posible)
un tercio de lo que es posible con un índice de cobertura, reducir el funcionamiento posterior mesa

índices de Samsung, criterios de puntuación, la más satisfactoria como sea posible, pero no necesario. De acuerdo con las necesidades del negocio puede ser

Publicados 168 artículos originales · elogios ganado 16 · Vistas a 90000 +

Supongo que te gusta

Origin blog.csdn.net/ajax_yan/article/details/105038930
Recomendado
Clasificación