Banco de dados mysql x postgree
MY SQL
Aluno: Thiago Henrique Batista Duarte
1) Selecionar o título dos filmes que pertencem a categoria “CHILDREN” ou “FAMILY”
Resolver usando UNION, IN e OR (verificar as diferenças no plano de execução)
Usando “UNION”:
Sentença UNION: select f.title from film f, film_category fc, category c where f.film_id = fc.film_id and fc.category_id = c.category_id and c.name = 'Children' union select f.title from film f, film_category fc, category c where f.film_id = fc.film_id and fc.category_id = c.category_id and c.name = 'Family'
Explain:
Sentença IN : select f.title from film f, film_category fc, category c where f.film_id = fc.film_id and fc.category_id = c.category_id and c.name IN ('Children', 'Family')
Explain:
Sentença OR: select f.title from film f, film_category fc, category c where f.film_id = fc.film_id and fc.category_id = c.category_id and (c.name = 'Children' or c.name = 'Family')
Explain:
2) Criar um índice no atributo “NAME” da tabela “CATEGORY” e verificar se há mudanças no plano de execução.
Alter table ‘sakila’, ‘category’ ADD INDEX ‘Index_name’ USING BTREE (‘name’);
Explain union índice
Comparando uma execução do Union sem índice e com índice vimos que diminuíram as linhas consultadas.
Explain in índice
Comparando uma execução do In sem índice e com índice vimos que em apenas uma etapa houve diferença no processamento das linhas consultadas.
Explain or índice
Comparando uma execução do OR sem índice e com índice vimos que em apenas uma etapa houve diferença no processamento das linhas consultadas.
3) Selecionar o título dos filmes cujo REPLACEMENT_COST seja superior a media do REPLACEMENT_COST de algumas da categorias à qual o filme pertence.
Resolver usando sub select na cláusula WHERE na cláusula FROM
Sentença Where select f.film_id, f.title, f.replacement_cost,c.name from film f, film_category fc, category c where f.film_id = fc.film_id
and