Tipos de índice en Microsoft SQL Server

Tipos de índice en Microsoft SQL Server
Un índice nos ayuda a buscar un registro particular en la base de datos. Uno de los componentes clave de las capacidades de administración de datos del servidor SQL es su soporte para la indexación que permite a los desarrolladores y administradores optimizar el rendimiento de sus consultas y mejorar la eficiencia general de sus bases de datos.

Discutiremos las diversas categorías de índices en el servidor SQL de Microsoft. Los principales tipos de índices son: índices agrupados, índices no agrupados, índices btree e índices únicos.

Tipos de índices en Microsoft SQL Server

Índice agrupado

Un índice agrupado define la disposición física real de los datos dentro de una tabla. Cada tabla del servidor SQL puede tener solo un índice agrupado, y el índice debe crearse en una columna única y no nula o un conjunto de columnas. Dado que un índice agrupado determina el diseño físico de una tabla, a menudo se usa para tablas que se buscan con frecuencia en función de su clave principal u otros valores únicos.

Primero creemos una tabla e insertemos los valores en ella utilizando los siguientes comandos SQL:

Insertar en los clientes (Customer_id, Customer_Name, Customer_Email, Customer_phone)
Valores (1, 'Somdeb Nath', '[email protected] ',' 3532626 '),
(2, 'Jina Pal', '[email protected] ',' 5555678 '),
(3, 'Arnita Guha', '[email protected] ',' 4449912 '),
(4, 'Krishna Kumar', '[email protected] ',' 716781497 ');

Veamos un ejemplo de un índice agrupado. Para crear un índice agrupado en la columna "Customer_ID", podemos usar la siguiente consulta SQL:

Crear un índice clúster idx_customers_customer_name en clientes (customer_name);

Esto crea un índice agrupado en la columna Customer_Name donde los datos en la tabla se ordenan físicamente en función de los valores en la columna Customer_Name.

Para obtener a todos los clientes cuyo nombre comienza con la letra "A", podemos usar la siguiente consulta SQL:

SELECCIONAR *
De los clientes
Donde customer_name como 'a%'
Pedido por customer_name;

Producción:

customer_id customer_name customer_email customer_phone
1 3 Arnita Guha [email protected] 4449912

Índice no agrupado

Es un tipo de índice que no afecta el orden físico de los datos en una tabla. Un índice no agrupado produce una estructura de datos independiente que almacena la clave de índice y el puntero a la fila de datos asociada en la tabla. Esto permite que las consultas localen rápidamente las filas de datos relevantes en función de los valores en el índice. A diferencia de los índices agrupados, las tablas en el servidor SQL pueden tener múltiples índices no agrupados, y el índice se puede crear en cualquier columna o conjunto de columnas en la tabla.

Un ejemplo de un índice no agrupado es el siguiente:

Crear índice no agrupado IDX_Customer_Email
En clientes (Customer_Email);

Esto crea un índice no agrupado en la columna "Customer_Email" donde los datos en la tabla permanecen físicamente desordenados, pero el índice almacena una copia ordenada de los datos en la columna "Customer_Email".

Para obtener a todos los clientes cuya dirección de correo electrónico incluye el "Gmail.com ”dominio, podemos usar la siguiente consulta SQL:

SELECCIONAR *
De los clientes
Donde customer_email como '%gmail.com%'
Pedido por customer_name;

Producción:

customer_id customer_name customer_email customer_phone

Aquí, ningún cliente tiene un correo electrónico que contenga el "Gmail.com ”dominio, por lo que el campo de salida está vacío.

Índice de Btree

Un índice btree es una forma de organizar los datos en una estructura que se asemeja a un árbol. Cada nodo en el árbol contiene un rango de valores clave, y cada nodo de hoja contiene un puntero a la fila de datos correspondiente. Los índices BTree se usan comúnmente en el servidor SQL porque permiten una búsqueda y clasificación eficientes de grandes cantidades de datos. Son especialmente útiles para consultas que involucran búsquedas de rango o operaciones de clasificación. Por ejemplo: salarios, números de teléfono, etc.

Un ejemplo de creación de un índice BTree en la columna "Customer_phone" es el siguiente:

Crear índice idx_customer_phone
En los clientes (Customer_phone);

Esto crea un índice de árbol B en la columna "Customer_phone" donde los datos en el índice se almacenan en una estructura similar a un árbol, con cada nodo que contiene un rango de valores y punteros a los otros nodos.

Ahora, queremos recuperar a todos los clientes cuyo número de teléfono comienza con el código de área de "555" utilizando la siguiente consulta SQL:

SELECCIONAR *
De los clientes
Donde customer_phone como '555%'
Pedido por customer_name;

Producción:

customer_id customer_name customer_email customer_phone
1 2 Jina Pal [email protected] 5555678

Índice único

Es un tipo de índice que asegura que no hay dos filas en una tabla que tengan el mismo valor clave. Esto puede ser útil para hacer cumplir la integridad de los datos y evitar los registros duplicados en una tabla.

Un ejemplo de crear un índice único en la columna "Customer_Email" es el siguiente:

Crear índice idx_customer_email_new
En clientes (Customer_Email);

Esto crea un índice único en la columna "Customer_Email" donde el índice aplica una restricción que garantiza que no hay dos filas en la tabla pueden tener el mismo valor en la columna "Customer_Email".

Ahora, inserte un nuevo cliente en la mesa con el "[email protected] ”Correo electrónico y recuperarlo utilizando la siguiente consulta SQL:

Insertar en los clientes (Customer_id, Customer_Name, Customer_Email, Customer_phone)
Valores (5, 'lili doe', '[email protected] ',' 333-333-3333 ');
seleccionar *
De clientes donde Customer_Email como 'l%';

Producción:

customer_id customer_name customer_email customer_phone
1 5 lili doe [email protected] 333-333-3333

Conclusión

Los índices juegan un papel importante en la optimización del rendimiento de las bases de datos de SQL Server. Comprender los diferentes tipos de índices puede ayudar a los administradores de bases de datos a elegir el tipo de índice más apropiado para sus aplicaciones. Al crear y mantener efectivamente los índices, las empresas pueden garantizar que sus bases de datos funcionen de manera eficiente, lo que les permite tomar decisiones basadas en datos y proporcionar un mejor servicio a sus clientes.