Un Constraint UNIQUE nomina una columna o un conjunto de columnas para
el cual el valor debe ser diferente para cada fila en la tabla. Si se basa
sobre solo una columna, esta columna es conocida como llave(Key). Si el
Constraint está compuesto por más de una columna (Constraint UNIQUE – Llave Compuesta
Composite Key). Las columnas no han de ser del mismo tipo o estar adyacentes en
la estructura de la tabla.
Una rareza del Constraint UNIQUE es que es posible ingresar valores
NULL en las columnas key. De hecho es posible tener cualquier número de filas
con valores nulos en sus columnas key. Este constraint garantiza que solo una
fila tendrá un valor único a menos que se refiere a valores NULL que pueden ser
varias filas las que lo tengan.
El
Constraint UNIQUE es realizado por un Indice. Cuando se define un
Constraint UNIQUE, Oracle buscará un índice en la columna Key, y
si ésta no existe, se creará. Entonces cada vez que se inserta una
fila, Oracle buscará el índice para ver si los valores de las
columnas key ya existen: si ya existen, el registro se rechazara. La
estructura de estos índices (conocido como B * Tree Index) no
incluye valores NULL, por lo que se permite muchas filas con NULL,
simplemente estas no estan en el índice.Mientras que el primer
objetivo del índice es hacer cumplir el Constraint, tiene un efecto
secundario: mejorar el rendimiento si las columnas de clave se
utilizan en las cláusulas WHERE de SQL. Sin embargo, la selección
WHERE key_column is null no utiliza el índice, ya que no incluye los
valores Null y por lo tanto siempre resultará en una exploración de
toda la tabla.
Comentarios
Publicar un comentario