Unidad 8. El DDL, Lenguaje de Definición de Datos (XVI)


8.13. Definir un índice CREATE INDEX


    CREATE [ UNIQUE ] [ CLUSTERED |  NONCLUSTERED ] INDEX nombre_indice 

          ON  <objeto> (columna [ ASC | DESC ] [ ,...n ] ) 

       [ ; ]

    <objeto> ::=

      {

          [nbBaseDatos.[nbEsquema].| nbEsquema.]nbTablaVista 

      }  

Esta es la sintaxis simplicada de la instrucción CREATE INDEX que permite crear un índice en una tabla sobre una o varias columnas.

nbBaseDatos Es el nombre de la base de datos.
nbEsquema Es el nombre del esquema al que pertenece la tabla/vista.
nbTablaVista Es el nombre de la tabla o vista sobre la que se quiere crear el índice.
nombre_indice Es el nombre del índice que estamos creando.
Columna Es el nombre de la columna que forma parte del índice. Se pueden definir índices compuestos escribiendo entre paréntesis los nombres de las columnas separados por comas.
ASC los valores de la columna se ordenarán de forma ASCendente o DESCendente. Por defecto se asume ASC.
UNIQUE permite definir un índice único (no admite valores repetidos).
CLUSTERED el índice será agrupado.
NONCLUSTERED (valor por defecto) el índice será no agrupado.

Ejemplos:


    CREATE INDEX I_clientes_nombre ON  Clientes (nombre)  

Crea un índice no agrupado sobre la columna nombre de la tabla Clientes en la base de datos actual, las filas se ordenarán de forma ascendente.


    CREATE INDEX I_clientes_ApeNom ON  Clientes (apellidos, nombre)  

Crea un índice no agrupado sobre las columnas apellidos y nombre de la tabla Clientes en la base de datos actual, las filas se ordenarán de forma ascendente por apellido y dentro del mismo apellido por nombre.


    CREATE INDEX I_clientes_EdadApe ON  Clientes (edad DESC,apellidos)  

Crea un índice no agrupado sobre las columnas edad y apellidos de la tabla Clientes en la base de datos actual, las filas se ordenarán de forma descendente por edad y ascendente por apellido. Aparecerán los clientes de mayor a menor edad y los clientes de la misma edad se ordenarán por apellido (por orden alfabético).


    CREATE CLUSTERED INDEX I_clientes_cod ON Clientes (codigo)  

Crea un índice agrupado sobre la columna codigo de la tabla Clientes en la base de datos actual, las filas se ordenarán y almacenarán por orden de código.


    CREATE UNIQUE INDEX U_clientes_col  ON Clientes (col)

Crea un índice único sobre la columna col de la tabla Clientes en la base de datos actual, la columna col no podrá contener valores duplicados.

8.14. Eliminar un índice DROP INDEX

Para eliminar un índice tenemos la sentencia DROP INDEX.
La instrucción DROP INDEX no es aplicable a los índices creados mediante la definición de restricciones PRIMARY KEY y UNIQUE. Para quitar la restricción y el índice correspondiente, se tiene que ejecutar un ALTER TABLE con la cláusula DROP CONSTRAINT.

Sintaxis simplificada:


    DROP INDEX <indice> [ ,...n  ] [ ; ]

      <indice>::=

      {

      nbindice ON [nbBaseDatos.[nbEsquema].|nbEsquema.]nbTablaVista

      }

nbBaseDatos Es el nombre de la base de datos.
nbEsquema Es el nombre del esquema al que pertenece la tabla/vista.
nbTablaVista Es el nombre de la tabla o vista de la que se quiere eliminar el índice.
nbindice Es el nombre del índice a eliminar.

Ejemplo:


    DROP INDEX U_clientes_col ON  Clientes;  

Elimina el índice U_clientes_col definido sobre la tabla Clientes.

• Ejercicio propuesto de la Unidad 8 • Prueba evaluativa de la Unidad 8
Febrero-2010
Pág. 8.16

Atrás  Inicio  Adelante






.