Creación de Índices
.
Un índice es una estructura
interna que el sistema puede usar para encontrar uno o más registros en una
tabla de forma rápida. En efecto, un índice de base de datos es,
conceptualmente, similar a un índice encontrado al final de cualquier libro de
texto. De la misma forma que el lector de un libro acudiría a un índice para
determinar en qué páginas se encuentra un determinado tema, un sistema de base
de datos leerá un índice para determinar las posiciones de registros
seleccionados por una consulta SQL. En otras palabras, la presencia de un
índice puede ayudar al sistema a procesar algunas consultas de un modo más
eficiente.
Un índice de
base de datos se crea para una columna o grupo de columnas. La figura siguiente
muestra un índice (XCNOMBRE) basado en la columna CNOMBRE de la tabla CURSO.
Observemos que el índice, a diferencia de la tabla CURSO, representa valores
CNOMBRE en orden. Además, el índice es pequeño en relación con el tamaño de la
tabla. Por lo tanto, es, probablemente, más fácil que el sistema busque el
índice para localizar un registro con un valor CNOMBRE dado, a que explore toda
la tabla en busca de ese valor. Por ejemplo, el índice XCNOMBRE podría ser muy
útil al sistema cuando ejecute la siguiente sentencia SELECT.
Tenemos tres tipos de índices.
El primero corresponde a las
claves primarias, que como vimos, también se pueden crear en la parte de
definición de columnas. La sintaxis para definir claves primarias es:
definición_columnas | PRIMARY
KEY (index_nombre_col,...)
mysql>
CREATE TABLE ciudad4(nombre CHAR(20) NOT NULL,
poblacion
INT NULL DEFAULT 5000,
PRIMARY
KEY (nombre));
Pero esta forma tiene más
opciones, por ejemplo, entre los paréntesis podemos especificar varios nombres
de columnas, para construir claves primarias compuestas por varias columnas:
mysql> CREATE TABLE mitabla1 (id1 CHAR(2) NOT NULL,
id2 CHAR(2) NOT NULL,
texto CHAR(30),
PRIMARY
KEY (id1, id2));
El segundo tipo de índice
permite definir índices sobre una columna, sobre varias, o sobre partes de
columnas. Para definir estos índices se usan indistintamente las opciones KEY o
INDEX.
mysql>
CREATE TABLE mitabla2(id INT, nombre CHAR(19), INDEX (nombre));
O su equivalente:
mysql>
CREATE TABLE mitabla3(id INT, nombre CHAR(19), KEY (nombre));
También podemos crear un índice
sobre parte de una columna:
mysql> CREATE TABLE mitabla4(id INT, nombre CHAR(19), INDEX
(nombre(4)));
Indices En Oracle
Creacion de indices en oracle
Los indices se usan para mejorar el rendimiento de las operaciones sobre una tabla.
En general mejoran el rendimiento las SELECT y empeoran (minimamente) el rendimiento de los INSERT y los DELETE.
Una vez creados no es necesario nada más, oracle los usa cuando es posible (ver EXPLAIN PLAN).
Tipos de indices en ORACLE
Lectura/Escritura
B-tree(arboles binarios)
Functional Based
Reserve key
Solo Lectura
Bitmap
Bitmap join
Index-organized table(algunas veces usados en lectura/escritura)
Cluster y hash cluster
Domail(muy especificos en aplicaciones Oracle)
En oracle existen tres tipos de indices:
1)Table Index:
CREATE [UNIQUE|BITMAP] INDEX [esquema.]index_name
ON [esquema.]table_name [tbl_alias]
(col [ASC | DESC]) index_clause index_attribs
2)Bitmap Join Index:
CREATE [UNIQUE|BITMAP] INDEX [esquema.]index_name
ON [esquema.]table_name [tbl_alias]
(col_expression [ASC | DESC])
FROM [esquema.]table_name [tbl_alias]
WHERE condition [index_clause] index_attribs
3)Cluster Index:
CREATE [UNIQUE|BITMAP] INDEX [esquema.]index_name
ON CLUSTER [esquema.]cluster_name index_attribs
Creacion
No hay comentarios:
Publicar un comentario