Breve introducción a los índices en 4D v11 SQL
4D v11 SQL abre los horizontes a los desarrolladores con las nuevas formas de indexación introducidas.
Hay dos cambios grandes. Nuevos tipos de índices y nueva forma de almacenar los índices.
Ahora en 4D v11 SQL es posible indexar cuatro maneras:
- Índice árbol-B (B-Tree)
- Índice árbol-B agrupado (Cluster B-Tree)
- Índice compuesto (Composite index)
- Índice de palabras claves
Los índices se almacenan en archivos o ficheros aparte, hay dos archivos, un índice de estructura con extensión 4DIndy y un índice de datos con extensión 4DIndx. Lo cual facilita la vida si se necesita recrear los índices, ya que con sólo cerrar la base, borrar los archivos de índices y abrir nuevamente la base, estos se recrearán ipso facto.
Índice árbol-B
Este tipo de índice es el clásico en 4D y el único disponible hasta 4D 2004. Es un índice optimizado para búsquedas y ordenaciones. Es la mejor elección de índice cuando se cuenta con una gran variedad de datos en un campo, por ejemplo, si en un campo hay en total 10 000 datos, de los cuales 8 100 de ellos son valores únicos, en teoría de base de datos la relación entre los valores únicos y la totalidad de los datos en un campo se conoce como selectividad de índice, en este caso es 0.81
Para crear un índice árbol-B (B-tree) se selecciona el campo en el editor de estructura y en las propiedades de indexación hay cuatro opciones:
- Ninguno
- Automático
- Árbol-B
- Árbol-B agrupado
La opción Ninguno, no indexa o da de baja un índice. Automático, permite a 4D escoger la mejor indexación basándose en el tipo de campo.
Índice árbol-B agrupado
Este tipo de índice es nuevo en 4D v11 SQL y se introduce para indexar campos en los cuales la selectividad de índice es muy baja, por ejemplo en un campo booleano donde sólo hay dos opciones, verdadero o falso, para nuestro ejemplo la selectividad de índice para un campo booleano es 2 / 10 000 = 0.0002. No sólo para campos booleanos, sino también para campos donde un valor se repite con frecuencia, por ejemplo el ID de producto en una tabla de facturas. Es un índice optimizado para búsquedas.
Índice compuesto
Los índices compuestos se utilizan para almacenar el valor combinado de dos o más campos en un índice. Este tipo de índice es muy útil para parejas de llaves como nombre y apellido, ciudad y provincia, código postal y país. Puede hacerse a partir de campos indexados o no. Este tipo de índice optimiza las búsquedas y especialmente las ordenaciones de los datos. Algo importante a tener en cuenta es que 4D dará preferencia en la búsqueda a los índices compuestos, es decir, si se busca en una tabla usando tres campos y los dos primeros son un índice compuesto, 4D realizará la búsqueda primero por estos campos y luego por el tercer campo.
Estos índices se crean desde la lista de índices o desde el ícono [+] y luego se definen sus propiedades como lo muestra la imagen.
Índice de palabras claves
En 4D v11 SQL los campos de texto pueden pesar hasta 2 GB lo cual hace indispensable que los campos de texto se puedan indexar, lo cual optimizará las búsquedas dramáticamente. Un índice Árbol-B o Árbol-B agrupado puede ser a la vez índice de palabras claves.
Para definir si un campo es índice de palabras claves basta con marcar la opción en la lista de propiedades.
Lista de índices
Dentro de las muchas novedades de 4D v11 SQL está la lista índices desde la cual se puede gestionar absolutamente todos los índices de la base de datos.
Desde la lista de índices se puede crear, modificar, reconstruir o borrar índices de todos los tipos.
Para crear un índice se hace clic en el ícono [+] y aparece un dialogo donde se definen las propiedades del índice. Tabla, nombre, tipo (Árbol-B, Árbol-B agrupado o palabras claves), campo o campos. Si se añade más de un campo automáticamente se definirá como índice compuesto.
Base de datos de ejemplo
Puede descargar una base de datos de ejemplos que ilustra acerca de los índices en 4D v11 SQL:
http://www.4dhispano.com/Cuadernos_4D/4D_Indexes.zip (54 MB)
Atención, es una base de datos pesada dado que contiene muchos datos para demostrar el efecto de los índices en búsquedas y ordenaciones.
Bibliografía
4D v11 SQL: The Missing Manual, Luc-Michel Six, 4D Press, 2007
4D v11 SQL Design Reference
ftp://ftp.4d.com/ACI_PRODUCT_REFERENCE_LIBRARY/4D_PRODUCT_DOCUMENTATION/PDF_Docs_by_4D_Product_A-Z/4D/4D_v11_SQL/4D_v11_Design_Ref.pdf