Requisito previo: indexación en bases de datos La indexación es un procedimiento que devuelve los datos solicitados más rápido desde la tabla definida. Sin indexación, el servidor SQL tiene que escanear toda la tabla en busca de sus datos. Al indexar, el servidor SQL hará exactamente lo mismo que hace cuando busca contenido en un libro al consultar la página de índice. De la misma forma, el índice de una tabla nos permite localizar los datos exactos sin escanear toda la tabla. Hay dos tipos de indexación en SQL.
- Índice agrupado
- Índice no agrupado
1. Agrupado: el índice agrupado es el tipo de indexación que establece un orden de clasificación físico de las filas. Supongamos que tiene una tabla Student_info que contiene ROLL_NO como clave principal, luego el índice agrupado que se crea automáticamente en esa clave principal clasificará la tabla Student_info según ROLL_NO . El índice agrupado es como un diccionario; en el diccionario, el orden de clasificación es alfabético y no hay una página de índice separada.
Ejemplos:
Input: CREATE TABLE Student_info ( ROLL_NO int(10) primary key, NAME varchar(20), DEPARTMENT varchar(20), ); insert into Student_info values(1410110405, 'H Agarwal', 'CSE') insert into Student_info values(1410110404, 'S Samadder', 'CSE') insert into Student_info values(1410110403, 'MD Irfan', 'CSE') SELECT * FROM Student_info
Producción:
ROLLO_NO | NOMBRE | DEPARTAMENTO |
---|---|---|
1410110403 | Doctor en Medicina Irfan | CSE |
1410110404 | S Samadder | CSE |
1410110405 | H. Agarwal | CSE |
Si queremos crear un índice agrupado en otra columna, primero debemos eliminar la clave principal y luego podemos eliminar el índice anterior. Tenga en cuenta que definir una columna como clave principal convierte a esa columna en el índice agrupado de esa tabla. Para hacer cualquier otra columna, el índice agrupado, primero tenemos que eliminar la anterior como sigue a continuación.
Sintaxis:
//Drop index drop index table_name.index_name //Create Clustered index index create Clustered index IX_table_name_column_name on table_name (column_name ASC)
Nota: Solo podemos crear un índice agrupado en una tabla.
2. No agrupado: el índice no agrupado es una estructura de índice separada de los datos almacenados en una tabla que reordena una o más columnas seleccionadas. El índice no agrupado se crea para mejorar el rendimiento de las consultas de uso frecuente que no están cubiertas por un índice agrupado. Es como un libro de texto; la página de índice se crea por separado al comienzo de ese libro. Ejemplos:
Input: CREATE TABLE Student_info ( ROLL_NO int(10), NAME varchar(20), DEPARTMENT varchar(20), ); insert into Student_info values(1410110405, 'H Agarwal', 'CSE') insert into Student_info values(1410110404, 'S Samadder', 'CSE') insert into Student_info values(1410110403, 'MD Irfan', 'CSE') SELECT * FROM Student_info
Producción:
ROLLO_NO | NOMBRE | DEPARTAMENTO |
---|---|---|
1410110405 | H. Agarwal | CSE |
1410110404 | S Samadder | CSE |
1410110403 | Doctor en Medicina Irfan | CSE |
Nota: podemos crear uno o más índices no agrupados en una tabla. Sintaxis:
//Create Non-Clustered index create NonClustered index IX_table_name_column_name on table_name (column_name ASC)
Tabla: Student_info
ROLLO_NO | NOMBRE | DEPARTAMENTO |
---|---|---|
1410110405 | H. Agarwal | CSE |
1410110404 | S Samadder | CSE |
1410110403 | Doctor en Medicina Irfan | CSE |
Entrada: crear índice no agrupado IX_Student_info_NAME en Student_info (NOMBRE ASC) Salida: índice
NOMBRE | ROW_ADDRESS |
---|---|
H. Agarwal | 1 |
Doctor en Medicina Irfan | 3 |
S Samadder | 2 |
Índice agrupado frente a no agrupado:
- En una tabla solo puede haber un índice agrupado o uno o más índices no agrupados.
- En el índice agrupado no hay un almacenamiento de índice separado, pero en el índice no agrupado hay un almacenamiento de índice separado para el índice.
- El índice agrupado es más lento que el índice no agrupado.
Publicación traducida automáticamente
Artículo escrito por Sabya_Samadder y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA