Está en la página 1de 3

UNNOBA Universidad Nacional Noroeste

Provincia Buenos Aires

Práctica Nª 1
Escuela de Tecnología – Área Base de Datos
Base de Datos 2

Optimización de Query’s

Objetivos de los ejercicios:


Conocer el funcionamiento del módulo de Optimización de Querys.

Requisitos:
· Motor de base de datos a utilizar: POSTRESQL
· IDE: PgAdmin III: editor de consultas SQL

PARTE I: Optimización Basada en Reglas. Árboles de ejecución.

1. Dado el siguiente esquema relacional

VENDEDORES(idvendedor, nombre_vendedor, sucursal)


PK(idvendedor) CK(nombre_vendedor)
PRODUCTOS (idproducto, codigo, descripción, precio, idvendedor)
PK(idproducto) CK(código) FK(idvendedor, VENDEDORES)

Y la siguiente consulta: “Listar los datos de los productos que vende la Sucursal de JUNIN”

SELECT p.codigo, p.descripcion, p.precio, v.nombre_vendedor


FROM PRODUCTOS p, VENDEDORES v
WHERE p.idvendedor = v.idvendedor and v.sucursal = ‘JUNIN’

Sabiendo que:
- CT(productos) = 7000
- CT(vendedores) = 300
- CV(sucursal= ‘JUNIN’, vendedores) = 10
- 1000 productos de vendores de JUNIN

Se pide:
a) Construir el árbol inicial de la consulta.
b) Suponiendo que solo evaluamos la cantidad de lecturas con costo constante igual a 1, hallar el plan
de ejecución que resulte del árbol con menor costo total.

2. Dado lo siguiente:
Tablas:
MATERIAS (idmateria, nombre_materia, Total_hs)
PK(idmateria) CK(nombre_materia)
TEMAS (idtema, nombre_tema)
PK(idtema) CK(nombre_tema)
MATERIAS_TEMAS (materia, tema)
PK(materia + tema) FK(materia,MATERIAS) FK(tema, TEMAS)

Sabiendo que:
- CT(materias) = 500

Hoja 1 de 3 Área Base de Datos | Escuela de Tecnología | UNNOBA


UNNOBA Universidad Nacional Noroeste
Provincia Buenos Aires

Práctica Nª 1
Escuela de Tecnología – Área Base de Datos
Base de Datos 2

- CT(temas) = 1000
- CT(materias_temas) = 700
- El tema ‘Interbloqueo’ está en el 5% de las materias
- No hay nombres de temas repetidos para una misma materia
- CV(total_hs > 90, materias) = 125
- 10 materias con total de horas superior a 90 que incluyen el tema Interbloqueo

Y la consulta: “Materias con total de horas superior a 90 y que incluyan el tema Interbloqueo”
SELECT nombre_materia
FROM MATERIAS_TEMAS MT,MATERIAS M, TEMA T
WHERE M.total_hs >90 AND
MT.materia = M.idmateria AND
MT.tema = T.idtema AND
T.nombre_tema= ’Interbloqueo’;

Se pide:
a) Construir el árbol inicial de la consulta.
b) Obtener el árbol optimizado pesado con la cantidad de lecturas con costo constante igual a 1. Describiendo
el costo de cada paso.
c) Reescribir el query en base al Plan de Ejecución con menor costo.

3. Dado el siguiente esquema relacional:

PILOTOS (idpiloto, nombre, fecha_nacimiento, nacionalidad, campeonatos_ganados)


PK(idpiloto) CK(nombre)
CARRERAS (idcarrera, nombre_carrera, pais, fecha, cant_vueltas)
PK(idcarrera) CK(nombre_carrera)
CORRIO_EN (piloto, carrera, auto, posic_clasific, tiempo_clasific, posic_carrera, tiempo_carrera,
cant_vueltas_carrera, tiempo_mejor_vuelta, Cant_paradas_boxes)
PK(piloto + carrera) FK(piloto,PILOTOS) FK(carrera,CARRERAS)

Dada la siguiente consulta para obtener: “Los pilotos que ganaron carreras en el segundo semestre del 2009”

SELECT P.nombre
FROM PILOTO P, CARRERA C, CORRIO_EN E
WHERE P.cod_piloto=E.cod_piloto AND C.id_carrera=E.id_carrera
AND C.fecha >= '01/07/2006' AND C..fecha <= '31/12/2006'
AND E.posic_carrera=1
Se pide
a) Construir el árbol inicial de la consulta.
b) Aplicar paso a paso las reglas de optimización que se puedan para construir un árbol optimizado. Justificar.

PARTE II: Optimización de consultas en un DBMS

Usar la base FOODMART:

1. Para la siguiente consulta:


select d.department_description,e.firsl_name,e.last_name,e.birth_date, s.salary_paid,
date_part('year',s.pay_date)
Hoja 2 de 3 Área Base de Datos | Escuela de Tecnología | UNNOBA
UNNOBA Universidad Nacional Noroeste
Provincia Buenos Aires

Práctica Nª 1
Escuela de Tecnología – Área Base de Datos
Base de Datos 2

from salary s, employee e, department d, position p


where s.employee_id = e.employee_id and
e.position_id = p.position_id and
e.department_id = d.department_id and
d.department_id = 11 and
date_part('year',e.birth_date) between 1967 and 1970 and
date_part('year',s.pay_date) = 1998 and
date_part('month',s.pay_date) = 3

 Obtener el plan de ejecución del query y explicar que está haciendo en cada uno de los siguientes casos:
a) Con el query como se presenta.
b) Mejorando el árbol de ejecución inicial.
c) Creando las PK y ejecutando el resultado obtenido en el punto b.
d) Creando las FK, sin creación de índices implícita, incluyendo la mejora del punto c y
ejecutando al resultado obtenido en el punto b.
e) Crear los índices asociados a las FK y ejecutando el resultado obtenido en el punto b.

 Con las claves primarias y foráneas creadas, realizar un estudio de índices para cada una de las
sentencias:
a) Crear índices para todos los atributos de la sentencia, salvo los que sean clave o figuren
únicamente en la cláusula Select.
b) Determinar el costo de ejecución de la sentencia SQL antes de crear ningún índice.
c) Determinar el costo después de la creación de cada índice, de forma individual, y en
combinación con otros índices. Pruebe con distintos tipos de índices
d) ¿Qué índices se consideran más adecuados? ¿Por qué?
e) Mostrar el explain de la optimización obtenida mediante el uso de índices.

2. Para las siguientes consulta:


a. SELECT *
FROM employee e
WHERE e.last_name LIKE ‘S%’ AND
e.salary > 1500

b. SELECT *
FROM employee e, department d
WHERE d.department_id IN (5,11,19) AND
e.department_id = d.department_id

Se pide:
a) Ejecutar las consultas sin el índice.
b) Estudiar el plan de ejecución de cada query ejecutado (salida del EXPLAIN)
c) Crear los índices que se consideren necesarios y ejecutar los mismos select, comparando los distintos
planes de ejecución para las posibilidades consideradas.
d) Elegir la mejor combinación consulta-índice.

Observaciones:
 El explain query del PgAdmin III le mostrará que índices se están usando. Capturar en cada caso la salida
de este explain.
 El backup de la base foodmart será publicada en plataformaed.unnoba.edu.ar
Hoja 3 de 3 Área Base de Datos | Escuela de Tecnología | UNNOBA

También podría gustarte