diff --git a/BasesDeDatos/procesamiento de Consultas/autoevalc6.org b/BasesDeDatos/procesamiento de Consultas/autoevalc6.org new file mode 100644 index 0000000..8d7c8e9 --- /dev/null +++ b/BasesDeDatos/procesamiento de Consultas/autoevalc6.org @@ -0,0 +1,56 @@ +#+title: Autoevaluacion +#+author: Luca Troiano, Federico Polidoro + +* Pensar como el motor de BD +** ¿Cual es el orden lógico de ejecución de esta consulta? + +#+begin_src sql + +SELECT * +FROM vuelos +WHERE YEAR(fecha_salida) = 2023 +AND destino = 'Madrid' +ORDER BY hora_salida; + +#+end_src + + +Lo que realiza la base de datos es primero traer todos los datos de la tabla, despues los filtra por año, luego por el lugar de destino y finalmente, los ordena por la hora de salida de los vuelos. + +** ¿Qué operaciones de álgebra relacional están presentes? + +El filtrado por fecha de salida y el destino, Por lo que utiliza: Seleccion e Interseccion. + +** ¿Qué parte del WHERE no puede usar índices? ¿Por qué? + +la parte de la funcion YEAR() porque la funcion se computa en momento de ejecucion. osea no puede usar indice porque el dato a buscar no existe hasta dsps de usar el ~YEAR()~. + +** ¿Qué pasará si no hay índice sobre destino ni fecha_salida? +Se tendria que hacer un escaneo de tabla entera para ambos casos. + +* Pensar como DBA +** Reescribí la consulta de forma optimizada: +- Sin SELECT * +- Evitando funciones en el WHERE +- Evaluando si ORDER BY es necesario + +#+begin_src sql +SELECT destino, origen, fecha_salida, hora_salida, aerolinea, estado +FROM vuelos +WHERE fecha_salida >= '2023-01-01' AND fecha_salida <= '2024-01-01' +AND destino = 'Madrid'; +#+end_src + +El order by no es necesario, en caso de existir un indice fisico con la hora_salida. También es justificable que como esto se va a usar en un informe no es tan necesario que se ordene en la base de datos. + +** ¿Qué índice crearías? Justificá: +Crearia unos en fecha_salida y destino. Esto para optimizar la recuperacion de datos mediante un indice fisico que los ordene a los datos, como por ejemplo, lo haria un ~B-tree~ . + +** ¿Qué tipo de optimización estás aplicando? +Estoy utilizando ambos tipos de optimización: + +- Por costos \\ +Se podria considerar elejir las columnas de las tablas. + +- Heuristica \\ +Cuando decidimos poner indices en ambas columnas que usamos en el WHERE. diff --git a/BasesDeDatos/procesamiento de Consultas/autoevalc6.pdf b/BasesDeDatos/procesamiento de Consultas/autoevalc6.pdf new file mode 100644 index 0000000..120bdc7 Binary files /dev/null and b/BasesDeDatos/procesamiento de Consultas/autoevalc6.pdf differ