SQL

Cómo crear los índices únicos de SQL Server con CREATE UNIQUE INDEX

Estrada Web Group
jiestrada
Cómo crear los índices únicos de SQL Server con CREATE UNIQUE INDEX

Resumen: en este tutorial, aprenderás sobre los índices únicos de SQL Server y cómo usarlos para imponer la unicidad de los valores en una o más columnas de una tabla.

Descripción general de los índices únicos de SQL Server

Un índice único garantiza que las columnas de clave de índice no contengan valores duplicados.

Un índice único puede constar de una o varias columnas. Si un índice único tiene una columna, los valores de esta columna serán únicos. En caso de que el índice único tenga varias columnas, la combinación de valores en estas columnas es única.

Cualquier intento de insertar con INSERT INTO o actualizar con UPDATE los datos en las columnas de clave de índice únicas que provoque el duplicado resultará en un error.

Un índice único puede ser agrupado o no agrupado.

Para crear un índice único, utiliza la instrucción CREATE UNIQUE INDEX de la siguiente manera:

CREATE UNIQUE INDEX index_name
ON table_name(column_list);

En esta sintaxis:

  1. Primero, especifica el nombre del índice único después de las palabras clave CREATE UNIQUE INDEX.
  2. En segundo lugar, especifica el nombre de la tabla a la que se asoció el índice y una lista de columnas que se incluirán en el índice.

Ejemplos de índices únicos de SQL Server

Tomemos algunos ejemplos del uso de índices únicos.

A) Creación de un índice único de SQL Server para un ejemplo de columna

Esta consulta de SELECT encuentra al cliente con el correo electrónico 'info@estradawebgroup.com':
 

SELECT
    customer_id,
    email
FROM
    sales.customers
WHERE
    email = 'info@estradawebgroup.com';

CREATE UNIQUE INDEX

El optimizador de consultas tiene que escanear todo el índice agrupado para encontrar la fila.

Para acelerar la recuperación de la consulta, puedes agregar un índice no agrupado a la columna de correo electrónico.

Sin embargo, suponiendo que cada cliente tendrá un correo electrónico único, puedes crear un índice único para la columna de correo electrónico.

Debido a que la tabla sales.customers ya tiene datos, primero debes verificar los valores duplicados en la columna de correo electrónico:

SELECT
    email,
    COUNT(email)
FROM
    sales.customers
GROUP BY
    email
HAVING
    COUNT(email) > 1;

La consulta devuelve un conjunto de registros vacíos. Significa que no hay valores duplicados en la columna de correo electrónico.

Por lo tanto, puedes ir a crear un índice único para la columna de correo electrónico de la tabla sales.customers:

CREATE UNIQUE INDEX ix_cust_email
ON sales.customers(email);

A partir de ahora, el optimizador de consultas aprovechará el índice ix_cust_email y utilizará el método de búsqueda de índice para buscar filas por correo electrónico.

cómo crear indices unicos con sql server y create unique index

B) Ejemplo de creación de un índice único de SQL Server para varias columnas

Primero, crea una tabla llamada t1 que tenga dos columnas para la demostración:

CREATE TABLE t1 (
    a INT,
    b INT
);

A continuación, crea un índice único que incluya columnas a y b:

CREATE UNIQUE INDEX ix_uniq_ab
ON t1(a, b);

Luego, inserta una nueva fila en la tabla t1:

INSERT INTO t1(a,b) VALUES(1,1);

Después de eso, inserta otra fila en la tabla t1. Ten en cuenta que el valor 1 se repite en la columna a, pero la combinación de valores en la columna a y b no está duplicada:

INSERT INTO t1(a,b) VALUES(1,2);

Finalmente, inserta una fila que ya existe en la tabla t1:

INSERT INTO t1(a,b) VALUES(1,2);

SQL te regresa el siguiente error:

Cannot insert duplicate key row in object 'dbo.t1' with unique index 'ix_ab'. The duplicate key value is (1, 2).

Índice único de SQL Server y NULL

NULL es especial. Es un marcador que indica la información faltante o no aplicable.

NULL ni siquiera es igual a sí mismo. Sin embargo, cuando se trata de un índice único, SQL Server trata los valores NULL de la misma manera. Significa que si creas un índice único en una columna que acepta valores NULL, solo puedes tener un solo valor NULL en esta columna.

Las siguientes declaraciones crean una nueva tabla llamada t2 y definen un índice único en la columna a:

CREATE TABLE t2(
    a INT
);

CREATE UNIQUE INDEX a_uniq_t2
ON t2(a);

Esta consulta inserta NULL en la columna a de la tabla t2:

INSERT INTO t2(a) VALUES(NULL);

Sin embargo, al ejecutar la consulta anterior nuevamente, SQL Server regresa un error debido a valores NULL duplicados:

INSERT INTO t2(a) VALUES(NULL);

INDEX frente a UNIQUE

Tanto el Index como la restricción UNIQUE imponen la unicidad de los valores en una o varias columnas. SQL Server valida los duplicados de la misma manera tanto para el INDEX único como para la restricción UNIQUE.

Cuando creas una restricción UNIQUE, detrás de escena, SQL Server crea un INDEX único asociado con esta restricción.

Sin embargo, la creación de una restricción UNIQUE en las columnas aclara el objetivo del INDEX único.

En este tutorial, has aprendido sobre el índice único (INDEX) de SQL Server y cómo crear un índice único para una o varias columnas de una tabla.

Compartir artículo:

Más artículos geniales

¿Cómo eliminar las etiquetas html de una cadena en SQL?

¿Cómo eliminar las etiquetas html de una cadena en SQL?

En este artículo pondré un pequeño ejemplo de cómo quitar las etiquetas HTML en SQL. Voy a mostrar una función definida por el usuario en SQL Server que analiza el código HTML y regresa texto plano. Si requieres eliminar las etiquetas HTML de una página este ejemplo te servirá.

Ver artículo completo
¿Qué son las sentencias INNER JOIN de SQL y cómo funciona?

¿Qué son las sentencias INNER JOIN de SQL y cómo funciona?

En este tutorial, aprenderás a usar la cláusula o sentencia INNER JOIN de SQL Server para realizar consultar datos en varias tablas.

Ver artículo completo
Cómo usar los valores NULL y los operadores IS NULL y IS NOT NULL para probar si un valor es NULL

Cómo usar los valores NULL y los operadores IS NULL y IS NOT NULL para probar si un valor es NULL

Resumen: en este tutorial, aprenderás sobre la lógica de los valores NULL en SQL Server. También aprenderás a usar los operadores IS NULL y IS NOT NULL para probar si un valor es NULL o no.

Ver artículo completo

Manténgase actualizado

Obtenga excelente contenido en su bandeja de entrada todas las semanas.
Solo contenido excelente, no compartimos su correo electrónico con terceros.
Subir al inicio de la pantalla ;