Você está na página 1de 12

ALISON KAIQUE LEMES LEITE

RAFAEL HENRIQUE DE FARIA

Otimizao de Dados Alterao de ndices e analise de tempo de resposta

BAURU 2014

Alison Kaique Lemes Leite | Rafael Henrique de Faria


Otimizao de Banco de Dados
Banco de Dados Noturno (Fatec Bauru)
I - Para iniciar, desbloqueie o usurio HR e avalie os ndices criados previamente na construo
do esquema. Quais ndices foram criados de forma implcita e quais foram criados de forma
explcita? (Atividade que pode ser realizada no enterprise manager)
Usurio HR estava bloqueado, foi utilizado o comando: ALTER USER HR IDENTIFIED BY ORACLE
ACCOUNT UNLOCK;

Figura 1 ndices Enteprise Manager


Aps analisar via Enterprise Manager os ndices para o esquema HR, foi constatado que alguns
foram criados de forma implcita a partir da Primary Key da tabela, conforme abaixo:
DEPT_ID_PK
EMP_EMP_ID_PK
JHIST_EMP_ID_ST_DATE_PK
JOB_ID_PK
LOC_ID_PK
REG_ID_PK
Porm tambm existem muitos que foram criados de forma explicita, pois percebeu-se que seria
necessrio, por conta de algumas tabelas mais acessadas, segue abaixo:
DEPT_LOCATION_IX
EMP_DEPARTMENT_IX
EMP_EMAIL_UK
EMP_JOB_IX
EMP_MANAGER_IX
EMP_NAME_IX
JHIST_DEPARTIMENT_IX
JHIST_EMPLOYEE_IX
JHIST_JOB_IX
LOC_CITY_IX
LOC_COUNTRY_IX

Alison Kaique Lemes Leite | Rafael Henrique de Faria


Otimizao de Banco de Dados
Banco de Dados Noturno (Fatec Bauru)
LOC_STATE_PROVINCE_IX
II - Baseado na modelagem descrita acima, elabore e realize as seguintes consultas.
Importante antes de iniciar a atividade no SQLPLUS, executar o comando "set timing on" para
que possa ter ao final o tempo total de execuo da consulta.
Executando o comando SET TIMING ON; para ativar o timer em cada comando sql executado.
Figura 2 Comando SET TIMING ON;
a) Exibir detalhes de funcionrio com ID 150 ou 160.
SELECT * FROM EMPLOYEES WHERE EMPLOYEE_ID IN (150,160);

Figura 3 Consulta A Sem Otimizao


Para simularmos a queda de desempenho, exclumos o ndice de Primary Key.

Figura 4 Excluso ndice


Aps a excluso, executamos novamente a consulta. Verificando que no houve queda de
desempenho, pois a massa de dados muito baixa.

Figura 5 Consulta A Aps excluso


Foi ento criado ndice, verificando o aumento de desempenho.

Alison Kaique Lemes Leite | Rafael Henrique de Faria


Otimizao de Banco de Dados
Banco de Dados Noturno (Fatec Bauru)

Figura 6 Criao ndice EMP_EMP_ID_PK

Figura 7 Consulta A Com Otimizao


b) Exibir Funcionrios onde o primeiro nome ou sobrenome comea com S.
SELECT * FROM EMPLOYEES WHERE FIRST_NAME LIKE 'S%' OR LAST_NAME LIKE 'S%';

Figura 8 Consulta B Sem Otimizao


Excluso de ndice, para anlise de desempenho.

Alison Kaique Lemes Leite | Rafael Henrique de Faria


Otimizao de Banco de Dados
Banco de Dados Noturno (Fatec Bauru)

Figura 9 Excluso ndice EMP_NAME_IX


Execuo da Consulta aps a excluso.

Figura 10 Consulta B Aps Excluso


Criao de ndice para otimizao.

Figura 11 Criao ndice EMP_NAME_IX


Consulta aps criao.

Figura 12 Consulta B Com Otimizao


c) Exibir nome do departamento e o nmero de funcionrios do departamento.
SELECT
B.DEPARTMENT_NAME, COUNT(A.EMPLOYEE_ID) NUM_EMP
FROM
EMPLOYEES A
INNER JOIN DEPARTMENTS B ON
B.DEPARTMENT_ID = A.DEPARTMENT_ID
GROUP BY
B.DEPARTMENT_NAME;

Figura 13 Consulta C Sem Otimizao

Alison Kaique Lemes Leite | Rafael Henrique de Faria


Otimizao de Banco de Dados
Banco de Dados Noturno (Fatec Bauru)
Criao de ndice para otimizao.

Figura 14 Criao ndice DEPT_NAME_IX


Consulta aps criao.

Figura 15 Consulta C Com Otimizao


d) Exibir nome do departamento e o primeiro nome do gerente.
SELECT
A.DEPARTMENT_NAME, B.FIRST_NAME
FROM
DEPARTMENTS A
INNER JOIN EMPLOYEES B ON
B.EMPLOYEE_ID = A.MANAGER_ID
ORDER BY
A.DEPARTMENT_NAME;

Figura 16 Consulta D Sem Otimizao


Com a criao dos ndices EMP_NAME_IX e DEPT_NAME_IX a consulta houve diferena no
desempenho.

Alison Kaique Lemes Leite | Rafael Henrique de Faria


Otimizao de Banco de Dados
Banco de Dados Noturno (Fatec Bauru)

Figura 17 Consulta D Aps criao de ndices


e) Exibir ttulo do trabalho, nome do empregado, e a diferena entre o salrio mximo para a
profisso para o salrio do empregado.
SELECT
*
FROM
(SELECT
B.JOB_ID,
B.JOB_TITLE,
A.FIRST_NAME || ' ' || A.LAST_NAME NAME_EMP,
(B.MAX_SALARY-A.SALARY) DIF_SALARY
FROM
EMPLOYEES A
INNER JOIN JOBS B ON
B.JOB_ID = A.JOB_ID) X
ORDER BY
X.JOB_TITLE,
X.NAME_EMP;

Figura 18 Consulta E Sem Otimizao

Alison Kaique Lemes Leite | Rafael Henrique de Faria


Otimizao de Banco de Dados
Banco de Dados Noturno (Fatec Bauru)
Criao de ndice para otimizao.

Figura 19 Criao de ndice JOB_TITLE_IX

Figura 20 Consulta E Com Otimizao


f) Exibir detalhes dos departamentos em que o salrio mximo de mais de 10 mil.
SELECT
A.DEPARTMENT_NAME,
C.STREET_ADDRESS,
C.CITY,
C.STATE_PROVINCE,
MAX(B.SALARY) MAX_SALARY
FROM
DEPARTMENTS A
INNER JOIN EMPLOYEES B ON
B.DEPARTMENT_ID = A.DEPARTMENT_ID
INNER JOIN LOCATIONS C ON
C.LOCATION_ID = A.LOCATION_ID
GROUP BY
A.DEPARTMENT_NAME,
C.STREET_ADDRESS,
C.CITY,
C.STATE_PROVINCE
HAVING
MAX(B.SALARY) > 10000;

Alison Kaique Lemes Leite | Rafael Henrique de Faria


Otimizao de Banco de Dados
Banco de Dados Noturno (Fatec Bauru)

Figura 21 Consulta F Sem Otimizao


Criao de ndice para otimizao.

Figura 22 Criao ndice LOCATIONS_ADDRESS_IX

Figura 23 Consulta F Com Otimizao


g) Exibir nome do pas, cidade e nmero de departamentos onde departamento tem mais de
5 funcionrios.
SELECT
A.COUNTRY_NAME,

Alison Kaique Lemes Leite | Rafael Henrique de Faria


Otimizao de Banco de Dados
Banco de Dados Noturno (Fatec Bauru)
B.CITY,
C.DEPARTMENT_NAME,
COUNT(D.EMPLOYEE_ID) AS NUM_EMP
FROM
COUNTRIES A
INNER JOIN LOCATIONS B ON
B.COUNTRY_ID = A.COUNTRY_ID
INNER JOIN DEPARTMENTS C ON
C.LOCATION_ID = B.LOCATION_ID
INNER JOIN EMPLOYEES D ON
D.DEPARTMENT_ID = C.DEPARTMENT_ID
GROUP BY
A.COUNTRY_NAME,
B.CITY,
C.DEPARTMENT_NAME
HAVING
COUNT(D.EMPLOYEE_ID) > 5;

Figura 24 Consulta G Sem Otimizao

Alison Kaique Lemes Leite | Rafael Henrique de Faria


Otimizao de Banco de Dados
Banco de Dados Noturno (Fatec Bauru)
Criao de ndice para otimizao.

Figura 25 Criao ndice COUNTRIES_NAME_IX

Figura 26 Consulta G Com Otimizao


h) Elabore uma consulta em que sejam realizadas junes (JOINS) de ao menos 3 tabelas.
SELECT
A.FIRST_NAME || ' ' || A.LAST_NAME NAME_EMP,
A.SALARY,
B.DEPARTMENT_NAME,
C.JOB_TITLE,
NVL(E.FIRST_NAME || ' ' || E.LAST_NAME,'') NAME_MAN,
D.STREET_ADDRESS, D.POSTAL_CODE, D.CITY, F.COUNTRY_NAME
FROM
EMPLOYEES A
INNER JOIN DEPARTMENTS B ON
B.DEPARTMENT_ID = A.DEPARTMENT_ID
INNER JOIN JOBS C ON
C.JOB_ID = A.JOB_ID
INNER JOIN LOCATIONS D ON
D.LOCATION_ID = B.LOCATION_ID
LEFT JOIN EMPLOYEES E ON
E.EMPLOYEE_ID = A.MANAGER_ID
INNER JOIN COUNTRIES F ON
F.COUNTRY_ID = D.COUNTRY_ID;
ORDER BY
A.FIRST_NAME,
A.LAST_NAME;

Alison Kaique Lemes Leite | Rafael Henrique de Faria


Otimizao de Banco de Dados
Banco de Dados Noturno (Fatec Bauru)

Figura 27 Consulta H Sem Otimizao


O ndice EMP_NAME_IX auxiliou no desempenho.

Figura 28 Consulta H Com Otimizao

Você também pode gostar