[Principio de base de datos] SQL de lenguaje estándar de bases de datos relacionales y sistema de gestión de bases de datos relacionales SQL Server (8)

Descripción general del índice.

Un índice es una estructura de base de datos que puede acelerar la recuperación. Contiene claves generadas a partir de una o más columnas de una tabla o vista, así como punteros asignados a ubicaciones de almacenamiento de datos designadas. La creación de índices bien diseñados puede mejorar significativamente el rendimiento de las consultas y aplicaciones de la base de datos. Por ejemplo, si consideramos la base de datos que contiene todos los datos como un libro, entonces el índice es el catálogo de este libro. Además de mejorar la velocidad de recuperación, los índices también pueden reforzar la unicidad de las filas en una tabla, asegurando así la integridad de los datos.
Una vez que se crea un índice, el DBMS lo administrará y mantendrá automáticamente.Cuando un usuario inserta, elimina y modifica registros, el DBMS actualizará automáticamente el índice en la tabla. Al escribir código de consulta SQL, la tabla con índice y la tabla sin índice se utilizan de la misma manera. Aunque los índices pueden mejorar el rendimiento hasta cierto punto, debemos evitar crear una gran cantidad de índices en una tabla, de lo contrario afectará el rendimiento de insertar, eliminar y modificar registros de datos, aumentará la sobrecarga de los índices de ajuste de DBMS y retrasará la respuesta de todo el sistema. velocidad.

Tipo de índice.

En SQL Server, hay dos tipos básicos de índices:

  • Índice agrupado
  • Índice no agrupado

Además, existen los siguientes índices:

  • Índice único
  • Ver índice
  • Índice de texto completo
  • Índice XML

Índice agrupado.

El orden lógico de las claves de índice en el índice agrupado es el mismo que el orden de almacenamiento físico real en la tabla de datos, y dado que solo hay una copia del almacenamiento físico real, una tabla de datos solo puede tener un índice agrupado. Crear y modificar un índice agrupado consume mucho tiempo y es necesario reajustar el orden de almacenamiento físico real de acuerdo con el orden lógico de las claves de índice.
Al crear una PRIMARY KEYrestricción en SQL , si no hay un índice agrupado en la tabla de datos, y la columna involucrada en esta restricción no se ha impuesto un índice no agrupado único, el sistema creará automáticamente PRIMARY KEYun índice agrupado único para las columnas involucradas. Al crear UNIQUErestricciones, se creará un índice único no agrupado de forma predeterminada. Si no hay un índice agrupado en la tabla de datos, puede especificar un índice agrupado para la columna de atributo involucrada.
En las siguientes situaciones, puede considerar el uso de un índice agrupado:

  • Una columna que contiene un número limitado de valores únicos, como una columna que contiene solo 100 códigos de estado únicos;
  • Utilice BETWEENoperadores como,>, <,> =, <= para devolver una consulta de un rango de valores;
  • Consultas que devuelven conjuntos de resultados a gran escala.

Índice no agrupado.

Los índices no agrupados y los índices agrupados tienen estructuras de índice similares, pero la diferencia es que los índices no agrupados no afectan el orden de almacenamiento físico de las filas de datos y el orden de almacenamiento físico real de las filas de datos no es coherente con el orden lógico de las claves de índice. Y cada tabla de datos puede tener varios índices no agrupados en lugar de solo uno, como un índice agrupado.
Al igual que los índices agrupados, los índices no agrupados también pueden mejorar la velocidad de consulta de datos, pero demasiados índices no agrupados reducirán la velocidad de inserción y actualización de datos, porque el DBMS debe actualizar los datos en la tabla de datos que contiene el índice no agrupado. índice. Si una tabla necesita actualizar datos con frecuencia, no debe crearse demasiados índices no agrupados.

Índice único.

El índice único puede garantizar que la clave de índice no incluya valores duplicados, de modo que cada fila de la tabla sea única de alguna manera. Solo cuando [la unicidad] es una característica de los datos en sí, tiene sentido especificar un índice único. Por ejemplo, si queremos que el valor de la columna "Número de identificación" en la tabla de estudiantes sea único, aunque el código principal en la tabla de estudiantes es "número de estudiante", podemos crear una restricción ÚNICA para el "Número de identificación". Después de eso, si se intenta ingresar varios números de identificación idénticos en esta columna, se mostrará un mensaje de error. El uso de un índice único de varias columnas puede garantizar que la combinación de varias columnas en la clave de índice sea única.
Tanto el índice agrupado como el índice no agrupado pueden ser únicos, es decir, podemos crear un índice agrupado único y un índice no agrupado único. Tenga en cuenta que la unicidad aquí se refiere a la unicidad de los datos, no a la unicidad del índice. Como se mencionó anteriormente, un índice agrupado solo puede tener una tabla de datos, pero un índice no agrupado no tiene tal restricción.
Al crear PRIMARY KEYy UNIQUErestringir, se crea automáticamente un índice único para la columna especificada. Si creamos manualmente un índice único, y el propósito es garantizar la integridad de los datos, entonces, al mismo tiempo, crear UNIQUErestricciones o PRIMARY KEYrestricciones (si es de hecho el código principal) es la mejor opción para la columna .

Ver índice.

El conjunto de resultados devuelto por la vista de consulta es el mismo que el conjunto de resultados devuelto por la tabla básica de consulta. De hecho, cuando se consulta la vista estándar, SQL Server resolverá internamente la vista y la convertirá en una consulta en la tabla básica. Para una vista estándar, solo se retiene su definición en el DD. Cada vez que el usuario opera en la vista, los datos se recuperan de la tabla básica de acuerdo con la definición. De esta manera, la sobrecarga de consultar el conjunto de resultados generado dinámicamente será muy alta, especialmente Para esas vistas complejas. Si tenemos una gran cantidad de requisitos de consulta para tales vistas, podemos crear índices agrupados únicos para estas vistas para mejorar el rendimiento de la consulta, llamados índices de vista, y las vistas con índices se denominan vistas indexadas. Una vez creado el índice agrupado único en la vista, el conjunto de resultados se almacenará directamente en la base de datos, al igual que una tabla básica con un índice agrupado único, lo que mejora efectivamente el rendimiento de la consulta de la vista.
Al igual que el índice anterior, si los datos de la tabla rara vez se actualizan y hay una gran cantidad de operaciones de consulta, el efecto de usar vistas indexadas es excelente. Por el contrario, el costo de mantener índices compensará o incluso superará los beneficios de utilizar vistas indexadas.

Índice de texto completo.

La indexación de texto completo es una de las tecnologías clave de los motores de búsqueda actuales. Imagine buscar una palabra en un archivo de 1 M, lo que puede tardar unos segundos, y un archivo de 100 M puede tardar decenas de segundos. Para acelerar este tipo de recuperación, ha aparecido la tecnología de indexación de texto completo, también conocida como documento invertido. El principio es definir primero un diccionario de sinónimos, y luego buscar y almacenar la frecuencia y posición de cada término en el artículo, lo que equivale a establecer un índice del archivo con el diccionario de sinónimos como directorio, para que cada palabra se pueda buscar rápidamente. Apunte a la posición de la palabra.

Crea un índice.

SQL proporciona declaraciones CREATE INDEXpara crear índices. Primero damos algunos ejemplos de creación de índices y describimos el formato de sintaxis.

[Ejemplo] Cree un índice único en las columnas SNo y CNo para la tabla SC.

CREATE UNIQUE INDEX SC_Index
ON SC(SNo,CNo) 

Después de ejecutar el código anterior, se crea un índice único llamado SC_Index para la tabla SC, que es un índice compuesto de las dos columnas de SNo y CNo, es decir, las filas de la tabla SC se ordenan en orden ascendente de SNo, y el mismo SNo se ordena en orden ascendente de CNo ( El valor predeterminado es el incremento de ASC). Debido a las UNIQUElimitaciones, la combinación SNo + CNo es única, no se repite.

[Ejemplo] Cree un índice agrupado en TN para la tabla del profesor T.

CREATE CLUSTERED INDEX T_Index
ON T(TN)

El formato de sintaxis para la creación de índices es el siguiente:

CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED] INDEX NAME_OF_INDEX
ON NAME_OF_TABLE|NAME_OF_VIEW(Col_1 ASC|DESC,Col_2 ASC|DESC,...)

Entre ellos UNIQUEsignifica único CLUSTEREDy NONCLUSTEREDsignifica agregación y no agregación.

Modifique el índice.

El comando para modificar el índice es ALTER INDEX.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Elimina el índice.

El formato de sintaxis para eliminar un índice es el siguiente, hay dos formatos:

DROP INDEX NAME_OF_TABLE|NAME_OF_VIEW.NAME_OF_INDEX

DROP INDEX NAME_OF_INDEX ON NAME_OF_TABLE|NAME_OF_VIEW

Supongo que te gusta

Origin blog.csdn.net/weixin_44246009/article/details/108068993
Recomendado
Clasificación