Soluciones

English version (when available)

P11.001- Comprueba si hay índices creados para la tabla historial. En caso afirmativo comenta cuáles y cómo se han creado

show index from historial;

-- Hay un índice llamado primary. Se creó al crear la tabla y definir restricción de clave primaria sobre la columna id


P11.002- Averigua el plan de ejecución para la sentencia SELECT ciudad, provincia from trabajador where ciudad=’Madrid’. Si se utiliza algún índice indica cuál

explain select ciudad, provincia from trabajador where ciudad=’Madrid’;

-- No utiliza ningún índice. Columna key vale Null.


P11.003- Crea un índice para la columna ciudad de la tabla trabajador

create index idx_trab_ciud on trabajador (ciudad);


P11.004- Comprueba si se utiliza el índice que acabas de crear en la ejecución de la sentencia SELECT ciudad, nombre, apellidos from trabajador. Qué

explain select ciudad from trabajador;

-- Utiliza el índice idx_trab_ciud

-- La columna possible_keys es NULL, mientras key muestra idx_trab_ciud. 
-- Esto ocurre porque ningún índice es adecuado para resolver la consulta. 
-- Sin embargo todos datos mostrados están en el índice idx_trab_ciud. 
-- El sistema usa el índice como fuente para extraer la información en lugar
--   de acceder a la tabla que es una estructura más compleja.
-- En estos casos no se utiliza el índice para determinar qué filas recuperar,
--   pero sí para mostrar sus filas en lugar de mostrar las de la tabla.


P11.005- Comprueba si se utiliza el índice que acabas de crear en la ejecución de la sentencia SELECT ciudad from trabajador where ciudad=’Madrid’. ¿Qué diferencia hay en el plan de ejecución con respecto al ejercicio anterior? Razona la respuesta.

explain select ciudad from trabajador where ciudad='Madrid';

-- Utiliza el índice idx_trab_ciud
-- En el plan de ejecución de la select del ejercicio anterior el valor de 
-- posibles índices (posible_keys) era NULL mientras que en este es el índice
-- que luego se utiliza. 
-- Esto ocurre porque en esta select sí se usa el índice para hacer la búsqueda 
-- mientras que en la anterior se sólo se usaba para sacar los datos a mostrar


P11.006- Comprueba si hay índices creados para la tabla habitación. En caso afirmativo comenta cuáles

show index from habitación;

-- Tiene dos índices. Primary sobre columnas id e idArea; idArea sobre columna idArea


P11.007- Comprueba si se utiliza algún índice la ejecución de la sentencia SELECT ciudad, nombre, apellidos from trabajador. ¿Qué diferencia encuentras con el plan mostrado en P11.004?

explain select ciudad, nombre, apellidos from trabajador;

-- No usa ningún índice.
-- A diferencia de lo que ocurría en P11.004, aquí no se usa el índice ni siquiera
--   para mostrar los datos. En este caso hay columnas a mostrar que no están en
--   el índice y por tanto ha de acudir a la estructura completa de la tabla