Documente Academic
Documente Profesional
Documente Cultură
S3 - Seminar SQL Partitii
S3 - Seminar SQL Partitii
TEHNICI DE PARTIȚIONARE
Tehnica de partiționare este utilizată pentru gruparea logică a valorilor dintr-o anumită
coloană dintr-o tabelă. Partițiile trebuie specificate în momentul în care este creată tabela, iar
înregistrările adăugate sunt automat repartizate în partiția de care aparțin (fig 1).
1
SQL TUNING – METODE DE PARTIŢIONARE
PARTITION BY LIST/RANGE(col_date)
(
PARTITION trim1 VALUES …
PARTITION trim2 VALUES …
PARTITION trim3 VALUES …,
PARTITION trim_other VALUES(DEFAULT)
);
In cadrul tabelelor partiționate se pot specifica și subpartiții, existând astfel o combinație între
partiții de tip RANGE si cele de tip LIST.
Pentru conexiunea in SQL Developer folositi urmatoarele detalii in fereastra New database
Connection (click dr pe Connection-> New Connection):
2
SQL TUNING – METODE DE PARTIŢIONARE
3
SQL TUNING – METODE DE PARTIŢIONARE
4
SQL TUNING – METODE DE PARTIŢIONARE
Exemplul 2: se selectează comparativ toate înregistrările din luna ianuarie din dizivia 'h.AFO
divizii'.
Exemplul 2 COST COST COST
BALANTA_A BALANTA_B BALANTA_C
SELECT * FROM 124 201 6
5
SQL TUNING – METODE DE PARTIŢIONARE
BALANTA_T
where extract
(month from DATA)
=1 AND
divizia='h.AFO
divizii';
SELECT * FROM - 68 3
BALANTA_T
partition (QT1)
where extract
(month from DATA)
=1 AND
divizia='h.AFO
divizii';
SELECT * FROM - - 3
BALANTA_T
subpartition
(QT1_AFO)
where extract
(month from DATA)
=1 AND
divizia='h.AFO
divizii';
6
SQL TUNING – METODE DE PARTIŢIONARE
FROM
BALANTA_a
where extract
(month from DATA)
in (1,2) AND
divizia='h.AFO
divizii'
group by
extract(month from
data);
SELECT - 70 4
extract(month from
data) luna,
sum(rulaj_d)
Total_debit,
sum(rulaj_c)
Total_credit
FROM
BALANTA_B
PARTITION(QT1)
where extract
(month from DATA)
in (1,2) AND
divizia='h.AFO
divizii'
group by
extract(month from
data);
SELECT - - 4
extract(month from
data) luna,
sum(rulaj_d)
Total_debit,
sum(rulaj_c)
7
SQL TUNING – METODE DE PARTIŢIONARE
Total_credit
FROM
BALANTA_T
subpartition
(QT1_AFO)
where extract
(month from DATA)
in (1,2) AND
divizia='h.AFO
divizii'
group by
extract(month from
data);
Din rezultatele prezentate se observă că cele mai mici costuri de execuție sunt obținute pentru
tabela BALANTA_C cu sub-partiții.