0% encontró este documento útil (0 votos)
36 vistas14 páginas

Universidad Nacional Autónoma de México: Administración de Bases de Datos

Este documento presenta instrucciones para una práctica de administración de bases de datos. Se pide crear estructuras de datos, insertar 100,000 registros, realizar consultas SQL, analizar planes de ejecución e índices, y optimizar el rendimiento de las consultas.

Cargado por

ERICK PM
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
36 vistas14 páginas

Universidad Nacional Autónoma de México: Administración de Bases de Datos

Este documento presenta instrucciones para una práctica de administración de bases de datos. Se pide crear estructuras de datos, insertar 100,000 registros, realizar consultas SQL, analizar planes de ejecución e índices, y optimizar el rendimiento de las consultas.

Cargado por

ERICK PM
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 14

Universidad Nacional Autónoma de

México

Facultad de Estudios Superiores


Acatlán

Administración de bases de datos

Profesor: Javier Rosas Hernández

Alumno: Erick Pérez Mendoza

Grupo: 1702
Práctica 10

Instrucciones

Crea las siguientes estructuras

1. Inserta 100,000 registros en la tabla Alumnos (en desorden) con sus respectivos registros en las otras
tablas.
2. Realiza la consulta SQL que genere el siguiente reporte:
Cuenta | Alumno | Carrera | Materia | Grupo | Calif | PromSem | PromFin

3. Valida el plan de ejecución de la consulta (punto 2) y determina si ulitiza índices. Comenta el plan.
4. Determina el tiempo de ejecución de la consulta (2) e índica si se puede mejorar con índices. Si es así,
optimízala y valida el plan de ejecución. comenta.
5. Crea e indica el índice necesario si en la consulta (2) se incluye la cláusula where promedio > 8 . Indica
qué hace la cláusula where agregada.
Verifica que en el plan de ejecución se utilice el índice creado.

Solución:
0. Primero creamos la estructura solicitada:

1. Luego, con el uso de python insertamos 100,000 registros en la tabla Alumnos y en las demás tablas. A
continuación se muestra parte del código en python:
Así, obtenemos los siguientes registros en las tablas:
2. Se realiza la consulta SQL que genera el siguiente reporte:
Cuenta | Alumno | Carrera | Materia | Grupo | Calif | PromSem | PromFin :
Podemos notar que la consulta se realiza en un tiempo de 3.888 segundos.

3. Se puede verificar el plan de ejecución, obteniendo los siguientes diagramas y tablas:

alumnos_pkey Nested Loop Inner Merge Inner Join Nested Loop Inner Nested Loop Inner Incremental Sort Window Aggregate Window Aggregate
Join Join Join

carreras_pkey Memoize

calif_pkey

materia_pkey Memoize

gpo_pkey Memoize

En la siguiente tabla se puede ver que se están realizando Index Scan con alumnos , carreras , calif ,
materia y gpo .
Además, obtenemos la siguiente información que confirma que el número de Index Scan es 5:

Es decir, no se están utilizando índices.

4. En la consulta hecha en el punto 2, se obtuvo un tiempo de 3.888 segundos.

El plan de ejecución indicó que se están realizando escaneos en todas las tablas involucradas. Para optimizar
la consulta, podemos considerar agregar algunos índices a tablas relevantes. Primero, se agregaron índices a
las columnas que se utilizan en las cláusulas JOIN y en las cláusulas WHERE para mejorar el rendimiento.
Además, se crearon índices para la columna utilizada en la cláusula JOIN de Alumnos y JOIN de Calif:
Se obtiene el siguiente resultado en el tiempo de ejecución:

Se puede notar que la variación del tiempo fue mínima, por lo que, no hubo ningún efecto en usar índices.
Por otro lado, el plan de ejecución brindó la siguiente información:
idx_alumnos_cta Nested Loop Inner Merge Inner Join Nested Loop Inner Nested Loop Inner Incremental Sort Window Aggregate Window Aggregate
Join Join Join

carreras_pkey Memoize

idx_calif_cta

materia_pkey Memoize

gpo_pkey Memoize
Es decir, se siguen haciendo 5 Index Scan . Por lo tanto, el uso de índices no optimizó la consulta.

5. Primero, se crea el índice necesario para la consulta anterior, la cual, incluye la cláusula
where promedio > 8 :

Esta cláusula está filtrando los resultados de la consulta para incluir solo las filas donde el valor en la
columna Promedio sea mayor que 8. Es una condición de filtrado que restringe el conjunto de
resultados a solo aquellos registros que cumplen con esa condición específica. Así, al ejecutar la
consulta, obtenemos lo siguiente:
Se puede notar que el tiempo de ejecución fue mucho menor, dando 1.575 segundos. Además,
visualizando el plan de ejecución se obtiene lo siguiente:

calif Hash Inner Join Hash Inner Join Hash Inner Join Hash Inner Join Sort Window Aggregate Window Aggregate

alumnos Hash

carreras Hash

materia Hash

gpo Hash

En la siguiente imagen se puede ver como Index Scan cambió por Seq Scan :
Además, el número de Index Scan ahora es de 0:

Por lo tanto, el índice creado si se está utilizando. Mejorando el tiempo de ejecución de la consulta.

También podría gustarte