Bases de datos

Solo disponible en BuenasTareas
  • Páginas : 6 (1434 palabras )
  • Descarga(s) : 0
  • Publicado : 23 de enero de 2011
Leer documento completo
Vista previa del texto
Indices
Un índice es una estructura de acceso que permite acelerar el acceso a la información de la BD La idea es la misma que en el caso de un índice de un libro de texto. En un libro un índice alfabético permite ir directamente a la página asociada con cada entrada del índice. Un índice se define para un campo de un archivo o atributo de una relación. Se guarda para cada valor de este atributolas direcciones de todos los bloques que contienen registros o tuplas con ese valor para dicho atributo. Los valores en un índice se mantienen ordenados de modo que se puede buscar rápidamente Generalmente se acostumbra a distinguir entre índice primario (la llave) e índices secundarios (estructuras de acceso adicionales)

Indices y Buffers
SQl> create table sample_3 (a varchar2(30), bvarchar2(30), c varchar3(30), ... z varchar3(30));

Tamaño del Buffer: 3120 => 4 tuplas (26*30*4) Si se quiere examinar la columna correspondiente a c ...
SQL> create index colc_ind on sample_3(colc);

Ahora en cada lectura en el indice pueden lerse 104 tuplas

Indices Primarios
Archivos ordenados con registros de dos campos: el valor de la llave (índice primario) y la dirección del block dondese encuentra ese registro Hay tantas entradas como bloques tenga asignados el archivo o tabla
Key Aaron Adams Alexander Allen Anderson Arnold ... Wong Wright Pointer Key Aaron Abbot Acosta Adams Akers Alexander Alfred Allen Anders Anderson Angeli Archer Arnold Atkins Wong Wood Wright Wyatt SSN Job Salary

Indices Secundarios
También es un archivo o tabla con dos campos (atributos) : elatributo índice y un puntero a un bloque o a un registro (tupla) Si se usan punteros a bloques una vez recuperado el bloque donde se encuentra el registro debe buscarse secuencialmente (no están ordenados por ese atributo) Pueden haber muchos índices secundarios para la misma tabla. Indice puede ser denso (una entrada por cada tupla en la relación) si se trata de un atributo que es clave candidataTambién es un archivo o tabla con dos campos (atributos) : el atributo índice y un puntero a un bloque o a un registro (tupla) Si se usan punteros a bloques una vez recuperado el bloque donde se encuentra el registro
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 9 5 13 8 15 3 17 21 11 16 2 24 10 20 1 4 23 18 14

Consideraciones
índice secundario usa mas espacio que índice primario porque necesitauna entrada por tupla (registro) en lugar de una por bloque el impacto en el desempeño es mas dramático porque de otro modo habría que hacer búsquedas secuenciales en la tabla (archivo) índice secundario permite mantener un ordenamiento de acuerdo a un atributo arbitrario (basta recorrer la tabla usando el índice) Es posible usar una estrategia que no requiera tener que estar ordenandopermanentemente la tabla de índices. Estos esquemas se denominan índices multinivel. Ahora la tabla de índices es en realidad una tabla que corresponde al primer nivel de la estructura de índices.

Indices Multinivel
2 35 55 85

2 8 15 24 35 39 44 51 55 63 71 80 85

2 5 8 12 15 21 24 29 35 36 39 41 44 46 51 52 55 58 63 66 71 78 80 82 85 89

Mas Consideraciones
Generalmente implementación de unatabla se hace en base a un archivo no ordenado y crear tantos índices como sea necesario Los atributos que aparecen frecuentemente en operaciones de selección o Join son los candidatos obvios para ser indexados Otra posibilidad es especificar un índice primario (por ejemplo el atributo que será usado en los joins). Esto también puede ser lo mas conveniente si las tuplas son accesadas en orden dadopor este atributo Algunos sistemas permiten especificar UNIQUE (llave primaria) o CLUSTER (índice primario no necesariamente único) Si la tabla está siendo actualizada frecuentemente (inserciones y eliminaciones) el tener muchos índices puede afectar al desempeño

Mejorando el Desempeño
Aceleración de los Joins Algunos DBMS ofrecen la posibilidad de almacenar dos tablas con un vínculo 1:N...
tracking img