t5 - indices

12
Tema – 5 Índices

Upload: daniel-santiago-martinez

Post on 24-Jun-2015

336 views

Category:

Education


0 download

DESCRIPTION

Indices MySQL

TRANSCRIPT

Page 1: T5 - Indices

Tema – 5Índices

Page 2: T5 - Indices

Índice

1. Introducción.2. Tipos de índices en MySQL.3. Creación de índices. 3.1. Ejemplos.4. Consulta de los índices de una tabla.5. Borrado de índices.6. Habilitar / Deshabilitar índices7. Uso correcto de índices.

2

Page 3: T5 - Indices

5.1. Introducción

• Los índices son unos elementos que se utilizan en los SGBD para acceder más rápidamente a los datos.

• ¿Cómo se accede a los datos en un SGBD?– Sin índices: se consultan todos los valores de todas las columnas.

Mientras más filas tenga una tabla, más se tardará en realizar la consulta.

– Con índices: si hay un índice en la columna en la que buscamos, no hace falta consultar todos los valores de todas las filas, la búsqueda es mucho más rápida.

• El administrador de la BDD deberá crear los índices necesarios en las columnas que presenten accesos y consultas con más frecuencia.

3

Page 4: T5 - Indices

5.2. Tipos de índices en Mysql

• MySQL presenta dos tipos de índices:– B-tree: los datos se organizan en forma de árbol.

La búsqueda de un valor es más rápida que en una estructura lineal en que se tenga que buscar desde el principio hasta el final pasando por todos los valores.

– Hash: acceden directamente a un valor concreto mediante una función que se llama función de hash. La búsqueda de un valor es muy rápida.

4

Page 5: T5 - Indices

5.2. Tipos de índices en Mysql

• Los campos definidos como PRIMARY KEY o UNIQUE también se utilizan como índices.– Índice PRIMARY KEY: todos los valores que

presenta este tipo de índice son únicos y no nulos.– Índice UNIQUE: todos los valores que presenta

este tipo de índice son únicos.

5

Page 6: T5 - Indices

5.3. Creación de índices

• La sintaxis para crear índices es la siguiente:– CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX

nombre_índice [USING HASH | BTREE] ON nombre_tabla (columna1, columna2…);• UNIQUE: índice con valores no repetidos.• FULLTEXT: indexa los valores de una columna de tipo

TEXT teniendo en cuenta el campo entero.• SPATIAL: para tipos de datos geométricos.

• Es posible crear índices directamente en la creación de la tabla que lo contendrá.

6

Page 7: T5 - Indices

5.3.1. Ejemplos

• Indexamos los empleados por su apellido:– CREATE INDEX Empl_Apellido ON Empleado (apellido);

• Indexamos los clientes por el código de su representante y su propio código:– CREATE INDEX Cliente_Repr_Cli ON Cliente

(codigoRepresentante, codigoCliente);

• Creamos el índice sobre el nombre de los empleados en el momento de crear la tabla:– CREATE TABLE Empleado ( codigo int primary key, nombre

varchar(25), apellido varchar(25), INDEX (nombre));

7

Page 8: T5 - Indices

5.4. Consulta de los índices de una tabla• La sintaxis para saber los índices que tiene una

tabla determinada es la siguiente:– SHOW indexes FROM nombre_tabla;

8

Page 9: T5 - Indices

5.5. Borrado de índices

• La sintaxis para borrar índices es la siguiente:– DROP INDEX nombre_índice ON nombre_tabla;

9

Page 10: T5 - Indices

5.6. Habilitar / Deshabilitar índices

• MySQL permite habilitar y deshabilitar índices de una tabla concreta. La sintaxis es la siguiente:– ALTER TABLE nombre_tabla DISABLE KEYS;

//Deshabilitamos los índices de la tabla indicada– ALTER TABLE nombre_tabla ENABLE KEYS;

//Habilitamos los índices de la tabla indicada

10

Page 11: T5 - Indices

5.7. Uso correcto de índices

• Dado que los índices hacen que las búsquedas de valores sean más rápidas, podríamos estar tentados a crear índices en todas las columnas de nuestras tablas. Pero las operaciones de inserción, actualización y borrado de datos se ven ralentizadas con el uso de índices, ya que hay que reestructurar los datos de toda la tabla afectada.

11

Page 12: T5 - Indices

5.7. Uso correcto de índices

• ¿Sobre qué campos crear índices?– Sobre los campos que más utilicemos en las

cláusulas WHERE de nuestras consultas.– No obstante, no merece crear índices en

columnas con un alto grado de valores repetidos.

12