Então, estou preso nisso há 6 horas e não tenho ideia do que fazer. Estou fazendo o dever de casa da universidade que exige que criemos uma consulta sql não otimizada (não precisa fazer sentido) e depois aplique os índices e veja se isso o torna mais rápido (o que fez para mim, de 0,70 de tempo decorrido para 0,66) e então nós teve que aplicar clusters.
Apliquei clusters e agora quase dobrou a quantidade necessária para concluir a consulta. De 0,70 a 1,15. Abaixo está como eu especifiquei meu cluster :
CREATE CLUSTER customer2_custid25 (custid NUMBER(8))
SIZE 270
TABLESPACE student_ts;
Eu tentei todas as minhas vezes anteriores com INITIAL e NEXT, mas isso parecia não fazer diferença. Abaixo seguem as tabelas :
CREATE TABLE CUSTOMER18 (
CustID NUMBER(8) NOT NULL,
FIRST_NAME VARCHAR2(15),
SURNAME VARCHAR2(15),
ADDRESS VARCHAR2(20),
PHONE_NUMBER NUMBER(12))
CLUSTER customer2_custid25(CustID);
CREATE TABLE product18(
ProdID NUMBER(10) NOT NULL,
PName Varchar2(6),
PDesc Varchar2(15),
Price Number(8),
QOH Number(5));
CREATE TABLE sales18(
SaleID NUMBER(10) NOT NULL,
SaleDate DATE,
Qty Number(5),
SellPrice Number(10),
CustID NUMBER(8),
ProdID NUMBER(10))
CLUSTER customer2_custid25(CustID);
CREATE INDEX customer2_custid_clusterindxqg ON CLUSTER customer2_custid25 TABLESPACE student_ts ;
Consulta básica:
SELECT
AVG(s.sellprice), s.qty, c.custid
FROM
SALES s, CUSTOMER2 c
WHERE
c.custid = s.custid
GROUP BY
s.qty, s.qty, c.custid
HAVING
AVG(sellprice) > (SELECT MIN(AVG(price))
FROM product
WHERE pname in
(SELECT pname
FROM product
GROUP BY pname
HAVING pname LIKE 'FA%')
GROUP BY price);
Eu também tentei remover a seção de tablespace no índice do cluster.
Eu segui esta fórmula para ajudar a calcular os tamanhos dos clusters :
"O tamanho de um cluster é o tamanho de uma linha pai + (tamanho da linha filho * número médio de filhos)."
Isso me levou ao tamanho de 270. No entanto, depois de testar tamanhos (subindo 20) de 250 para 350, descobri que 320 era o mais rápido em 1,15.
Não importa o que eu tente, eu não posso, pelo amor de mim, reduzi-lo aos meus tempos de consulta base.
Outros alunos fizeram o mesmo e reduziram pela metade o tempo de consulta.
Toda a ajuda é muito apreciada.