viernes, 9 de mayo de 2014

Indices en PL/SQL


Un índice(Index) es una estructura de datos que permite acceder a diferentes filas de una misma tabla a través de un campo (o campos clave).Esto permite un acceso mucho más rápido a los datos.

Concepto
Para entenderlo mejor  primero debemos conocer como se  almacena la información internamente en las tablas de una base de datos. Cada tabla se divide en páginas de datos, imaginemos un libro, podríamos escribirlo en "una sola hoja enorme" al estilo pergamino egipcio, o bien en páginas a las que podemos acceder rápidamente a través de un índice. Está idea es la que se aplica en el mundo de las bases de datos, la información esta guardada en una tabla (el libro) que tiene muchas hojas de datos (las páginas del libro), con un índice en el que podemos buscar la información que nos interesa.

Si queremos buscar la palabra zapato en un diccionario , ¿qué hacemos?
  • Leemos todo el diccionario hasta encontrar la palabra, con lo que nos habremos leido todo el diccionario 
  • Buscamos en el índice en que página está la letra z, y es en esa página donde buscamos.
Ni que decir tiene que la opción dos es la correcta, y es de este modo como se utiliza un índice en las bases de datos, se define el ínidice a través de un campo (o campos) y es a partir de este punto desde donde se busca.

Los índices se actualizan automáticamente cuando realizamos operaciones de escritura en la base de datos. Este es un aspecto muy importante de cara al rendimiento de las operaciones de escritura, ya que además de escribir los datos en la tabla se escribiran también en el indice. Un número elevado de índices hará más lentas estas operaciones. Sin embargo, salvo casos excepcionales, el beneficio que aportan los indices compensa esta penalización.

Creación
La creación de índices, como ya hemos visto, permite acelerar las consultas que se realizan en la base de datos. Las sentencias de SQL para crea indice es:

CREATE INDEX;

Podemos usar la palabra clave UNIQUE que especifica  que no pueden existir claves duplicadas en el índice.
ASC | DESC especifican el criterio de ordenación elegido, ascendente o descendente, por defecto es ascendente.

Ejemplo: En el apartado dedicado a la definición de tablas creamos la tabla tClientes, este ejemplo crea un índice único en el campo NIF. Esto nos permitirá buscar mucho mas rápido por el campo NIF y nos asegurará que no tengamos dos NIF iguales.

CREATE UNIQUE INDEX UIX_CLIENTES_NIF
ON tCLIENTES (NIF ASC);

Los nombres de los índices deben ser únicos. Si  queremos  eliminar un índice debemos emplear la sentencia DROP INDEX.

DROP INDEX;

Ejemplo:Para eliminar el índice creado anteriormente.

DROP INDEX tCLIENTES.UIX_CLIENTES_NIF;


No hay comentarios:

Publicar un comentario