Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda/ GaussDB(DWS)/ Preguntas frecuentes/ Uso de la base de datos/ ¿Cuáles son las diferencias entre las restricciones únicas y los índices únicos?
Actualización más reciente 2023-10-12 GMT+08:00

¿Cuáles son las diferencias entre las restricciones únicas y los índices únicos?

  • Los conceptos de una restricción única y un índice único son diferentes.

    Una restricción única especifica que los valores de una columna o un grupo de columnas son todos únicos. Si no se especifica DISTRIBUTE BY REPLICATION, la tabla de columnas que contiene solo valores únicos debe contener columnas de distribución.

    Se utiliza un índice único para garantizar la unicidad de un valor de campo o la combinación de valores de varios campos. CREATE UNIQUE UNDEX crea un índice único.

  • Las funciones de una restricción única y un índice único son diferentes.

    Las restricciones se utilizan para garantizar la integridad de los datos y los índices se utilizan para facilitar la consulta.

  • Los usos de una restricción única y un índice único son diferentes.
    1. Tanto las restricciones únicas como los índices únicos se pueden utilizar para garantizar la unicidad de los valores de columna que pueden ser NULL.
    2. Cuando se crea una restricción única, se crea automáticamente un índice único con el mismo nombre. El índice no se puede eliminar por separado. Cuando se suprime la restricción, el índice se suprime automáticamente. Una restricción única utiliza un índice único para garantizar la unicidad de los datos. Las tablas de almacén de filas de GaussDB(DWS) admiten restricciones únicas, pero las tablas de almacén de columnas no lo hacen.
    3. Un índice único creado es independiente y se puede eliminar por separado. Actualmente en GaussDB(DWS), los índices únicos solo se pueden crear usando B-Tree.
    4. Si desea tener una restricción única y un índice único en una columna y se pueden eliminar por separado, puede crear un índice único y, a continuación, una restricción única con el mismo nombre.
    5. Si un campo de una tabla se va a utilizar como clave externa de otra tabla, el campo debe tener una restricción única (o es una clave primaria). Si el campo solo tiene un índice único, se notifica un error.

Ejemplo: Crear un índice compuesto para dos columnas, que no es necesario que sea un índice único.

1
2
CREATE TABLE t (n1 number,n2 number);
CREATE INDEX t_idx ON t(n1,n2);

Puede utilizar el t_idx de índice creado en el ejemplo anterior para crear un t_uk de restricción único, que solo es único en la columna n1. Una restricción única es más estricta que un índice único.

1
ALTER TABLE t ADD CONSTRAINT t_uk UNIQUE (n1) USING INDEX t_idx;