Segun la Wikipedia, un índice es:
Lista o relación ordenada con algún criterio de libros, documentos, monedas, objetos en venta, etc., de una persona, empresa o institución, que generalmente contiene una breve descripción del objeto relacionado y ciertos datos de interés.
Esa definición es la de un índice en general, el índice en una base de datos es algo similar, nos permite realizar consultas de una manera más rápida y funcional. Vemos la definición de Wikipedia de Índices en Base de Datos
El índice de una base de datos es una estructura de datos que mejora la velocidad de las operaciones, por medio de identificador único de cada fila de una tabla, permitiendo un rápido acceso a los registros de una tabla en una base de datos.
Los índices nos ayudan a mejorar la velocidad de las consultas, tal vez en una tabla sin índices que tengan pocos datos no se notará la diferencia, pero imaginemos una base de datos inmensa, vamos a tomar de ejemplo la base de datos de resultados deportivos que estamos realizando, e imaginemos que tenemos millones de partidos, solo queremos los resultados del equipo de Cruz Azul, en una fecha determinada, por defecto, al crear las llaves primarias, se crea un índice, ya que una llave primaria en sí, es un índice, veamos la estructura de la tabla partidos.
Como vemos, todos los campos que son keys, por default son índices, pero que pasa, si tenems dados de alta millones de partidos y solo queremos los partidos de Cruz Azul en un rango de fechas, pues el programa buscará partido por partido, y excluirá las fechas que no entren en el rango, ésto porque el índice es el idequipolocal, idequipovisitante, idpartido, etc. pero no hay ningún índice con la fecha, pues bien, el índice nos servirá para eso, al crear un índice en la fecha, ademas de buscar por idequipolocal y idequipovisitante ademas buscará por fechas, ya no buscará partido por partido, sino que buscará ahora, ademas por fecha, que sería el índice y se iría automáticamente a la fecha que le pusimos dentro del rango inicial, haciendo las consultas aún mas veloces, imagínense ahora que las consultas están unidas con uno o varios JOINS, puede tardar demasiado una consulta y por eso es necesario y útiles los índices.
Pero basta ya de teoría, vamos a lo que nos interesa y nos gusta que es hacer las cosas.
Para crear un índice utilizaremos la siguiente instrucción:
Ejercicio 1:
Crear un índice en la tabla PARTIDOS, en el campo fecha, para agilizar las consultas que tengan
rangos de fechas, utilizando el comando CREATE
INDEX
create index fecha on partidos (fecha);
Como pueden ver se utiliza el comando CREATE INDEX, después se le pone un nombre al índice, con la preposición ON le indicamos a que tabla aplicará el índice y entre paréntesis el campo o campos que se utilizarán de índice, así es, leyeron bien, un índice puede estar definido por varios campos y no uno solo, veamos un ejemplo de uso de índice
Ejercicio 2
Crear una consulta que
muestre los partidos jugados por Cruz
Azul en lo que va del año 2016
select * from partidos
where (idequipolocal =1 or idequipovisitante=1)
and fecha between '20160101' and '20160731'
Ejercicio 3
Crear dos índices en la
tabla PARTIDOS, el primero hará
referencia al EQUIPOLOCAL, y el otro
a EQUIPOVISITANTE, utilizando la
sentencia CREATE INDEX
create index equipo_local on partidos (equipolocal);
create index equipo_visitante on partidos (equipovisitante);
Como ven hemos creado dos índices, el primero hace referencia al campo equipolocal y el otro hace referencia al campo equipovisitante, podemos crear la siguiente consulta:
select * from partidos
where (equipolocal ='Cruz
Azul' or equipovisitante='Cruz Azul')
and fecha between '20160101' and '20160731'
En este caso, nuestra consulta es aún mucho más rápida, ya que además de comenzar la búsqueda desde el rango de fechas, no buscará en todos los equipos, simplemente en los que sean Cruz Azul, en este caso, son muy pocos registros, sin embargo la diferencia si se alcanza a apreciar aunque se un poco.
Ejercicio 4
Realizar una consulta
donde se muestren los partidos entre Guadalajara
y Cruz Azul en el último año,
los índices creados ayudarán a que la consulta sea más rápida
sselect p.fecha, p.equipolocal, p.equipovisitante, p.goleslocal, p.golesvisitante, e.nombre
from partidos p
INNER JOIN estadios e
on p.idestadio = e.idestadio
where (equipolocal ='Cruz Azul' and equipovisitante='Guadalajara')
or (equipolocal ='Guadalajara' and equipovisitante='Cruz Azul')
Ejercicio 5
Mostrar la lista de
índices que se encuentran creados en la tabla PARTIDOS utilizando la sentencia SHOW INDEX
show keys from partidos
Como pueden ver, ese comando nos muestra todos los índices creados en la tabla y así podríamos consultarlos, o borrarlos, según sea el caso, y ya que hablamos de borrar, ¿como borraríamos un índice?
drop index equipolocal_visitante_fecha on partidos
Como pueden ver, con las sentencia DROP INDEX podemos eliminar un índice.
Hasta aquí el tema de los índices, espero haya sido de su agrado, pero sobre todo de su utilidad, espero comenten, haga +1, compartan o den clic algún anuncio, recuerden que cualquier duda, estoy a sus ordenes. Muchas gracias a todos
No hay comentarios.:
Publicar un comentario