Consultas SQL en índices agrupados y no agrupados

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.

  1. Índice agrupado
  2. Í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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *