Red de conocimiento informático - Aprendizaje de código fuente - Conceptos básicos de la base de datos: explique el concepto de índice MySQL y la aplicación del índice de base de datos [2]

Conceptos básicos de la base de datos: explique el concepto de índice MySQL y la aplicación del índice de base de datos [2]

Clasificación de cinco índices

Creación directa de índices y creación indirecta de índices

Creación directa de índices CREATE INDEX mycolumn_index ON mytable (myclumn)

Cree un índice indirectamente definiendo una restricción de clave primaria o una restricción única para crear un índice indirectamente

Índice normal e índice único

Índice normal CREATE INDEX mycolumn_index ON mytable (myclumn)

Un índice único garantiza que todos los datos en la columna de índice sean únicos y puedan usarse para índices agrupados y no agrupados CREATE INDEX name_index ON nombre de usuario(nombre apellido)

Índice agrupado e índice no agrupado Índice de clúster (índice de clúster índice de clúster)

El orden físico del índice físico del índice de clúster es el mismo que el de la tabla base, y el orden de los valores de datos siempre son secuenciales

CREAR ÍNDICE CLUSTERED mycolumn_cindex ON mytable(mycolumn ) CON

ALLOW_DUP_ROW (índice agrupado que permite registros duplicados)

No agrupado index CREAR ÍNDICE NO CLUSTERED mycolumn_cindex ON mytable(mycolumn)

VI. Uso del índice

Cuando la frecuencia de actualización de los datos de campo es baja, la frecuencia de consulta es alta y hay una gran cantidad de datos duplicados, se recomienda utilizar un índice agrupado

Con frecuencia se accede a varias columnas al mismo tiempo y cada columna contiene datos repetidos, puede considerar crear un índice compuesto

La columna principal del índice compuesto debe ser la misma que la columna principal del índice. > La columna principal de un índice compuesto debe estar bien controlada; de lo contrario, el índice no será válido. Si la columna principal no está en los criterios de consulta, no se utilizará el índice compuesto. La columna principal debe ser la columna más utilizada.

Antes de realizar realmente una operación de varias tablas, el optimizador de consultas enumerará muchas soluciones de combinación posibles según las condiciones de combinación y luego determinará la mejor solución con el valor más bajo. sobrecarga del sistema. Por ejemplo, tablas con índices y tablas con una gran cantidad de filas; la elección de la apariencia está determinada por la fórmula: la cantidad de filas coincidentes en la apariencia * la cantidad de búsquedas para cada búsqueda en la tabla interna es la mejor solución; el que tiene el producto más pequeño

Los resultados de cualquier operación en las columnas en la cláusula donde se calculan columna por columna en tiempo de ejecución, por lo que tiene que realizar búsquedas en tablas sin usar índices en las columnas si estos pudieran ser; resultados obtenidos en el momento de la compilación de la consulta, el optimizador de consultas puede obtener estos resultados en el momento de la compilación. Si estos resultados están disponibles en el momento de la compilación de la consulta, el optimizador de SQL puede optimizarlos usando índices para evitar búsquedas en tablas (por ejemplo: select * from record where substring(card_no) =

amp;amp; select * del registro donde card_no me gusta) Cualquier operación en la columna dará como resultado un escaneo de la tabla. Esto incluye funciones de bases de datos, expresiones de cálculo, etc. Al realizar la consulta, mueva la operación al lado derecho del signo igual si es posible

La condición in en donde es lógicamente equivalente a o, por lo que el analizador convierte in ( ′ ′) en la columna = a ejecutarse ′ o column= ′, queremos que busque estas cláusulas una por una y luego agregue los resultados.

Esperábamos que buscara cada cláusula o una por una y agregara los resultados, lo que aprovecharía el índice de la columna, pero en su lugar utiliza una estrategia or, que consiste en obtener los registros que satisfacen cada cláusula o y almacenarlos; En una tabla de trabajo de base de datos temporal, luego cree un índice único para eliminar registros duplicados y finalmente calcule los resultados de esta tabla temporal. Por lo tanto, el proceso real no utiliza el índice de la columna y el tiempo de finalización se ve afectado por el rendimiento de la base de datos tempdb. Las tablas de trabajo se utilizan a menudo para invalidar índices; si no hay muchas filas duplicadas, considere dividir la cláusula. La cláusula de división debe incluir el índice.

Haga un buen uso de los procedimientos almacenados, que hacen que SQL sea más flexible y eficiente. lishixinzhi/Artículo /programa/MySQL/201311/29603