V.Témakör:
Lekérdezések optimalizálása
5.gyak.
>> ism. IV.
Témakör 8B. Feladatok IOT-re
és a kötelező
5HF
>> Előzmények.
Ismétlő ellenőrző kérdések
>> 5.1.
Feladatok indexstruktúrák
használatával
>> 5.2.
Feladatok a kiterjesztett
relációs algebrai műveletekkel
>> 5.3.
Feladatok heurisztikán
alapuló algebrai optimalizálásra
6.gyak.
>>
ism. IV.
Témakör 4.8C.
Feladatok klaszterekre és az 6HF+
>> ism. IV.
Témakör 4.8D.
Feladatok partíciókra
>> 5.4.
Feladatok lekérdezések
végrehajtási
algoritmusaira
és költségbecslésekre
7.gyak.
>> I.ZH AB
szakirány (IP-abATM) illetve C szakirány
(IP-cAMÜ)
8-9.gyak.
>> 5.5.
Feladatok végrehajtási tervek
előállítására és
megváltoztatására
tippek segítségével
>> 5.6.
Végrehajtási tervek
megváltoztatása statisztikák
létrehozásával és
törlésével
>> 5.7. SQL
utasítás rekonstruálása a
végrehajtási terv alapján
és a KÖTELEZŐ
7HF
_______________________________________________________
5. gyak. (2008.X.7/X.9)
- Lekérdezések
optimalizálása
Az
indexek felépítése és
szerkezete. A B-fa
index levél és nem levél
csúcsok
szerkezete. A Bitmap index szerkezete.
B-fa és Bitmap indexek
készítése papíron.
Bitvektorok tömörítése
szakaszhossz
kódolással. Indexek
létrehozása Oracle-ben.
Különböző
logikai műveletek elvégzése bitmap
indexek segítségével.
Lekérdezések megadása kiterjesztett
relációs algebrai
műveletekkel.
Kifejezésfák felrajzolása.
Heurisztikus
szabályokon alapuló algebrai
optimalizálás.
Az
eddigi fogalmak átismétlése,
ismétlő kérdések, elmaradt feladatok
pótlása.
>> ism. IV.
Témakör 4.8B. Feladatok IOT
táblákra és
a kötelező
5HF
>>
Előzmények.
Ismétlő ellenőrző kérdések
>> 5.1.
Feladatok indexstruktúrák
használatával
>> 5.2.
Feladatok a kiterjesztett
relációs algebrai műveletekkel
>> 5.3.
Feladatok heurisztikán
alapuló algebrai optimalizálásra
Előzmények.
Ismétlő ellenőrző kérdések
IV./7.
Előadáshoz kapcsolódó
elméleti feladatok feladatsor
folytatása,
további feladatokat lásd még az
alábbi "zöld könyvben":
Molina-Ullman-Widom:
Adatbázisrendszerek
megvalósítása, 2001.
50ea_01
- Milyen
típusú
állományokból
áll egy Oracle
adatbázis?
Melyiket mire használja a
rendszer?
50ea_02
- Mi a különbség a
következő 3 adatszótár
tartalmában? Melyik miket tartalmaz?
DBA_TABLES, ALL_TABLES,
USER_TABLES
50ea_03
- Mire
való a szekvencia? Milyen módon lehet
használni SQL utasításból?
Írjon le 2-3 SQL
utasítást, amelyek egy SEQV1 nevű
szekvenciát használnak.
50ea_04
-
Milyen
kapcsolatban vannak egymással az alábbi
adattárolással kapcsolatos
fogalmak? Táblatér,
Szegmens, Adatfájl
50ea_05
- Az alábbi objektumok
közül melyik hány adatszegmenssel
rendelkezhet?
nem partícionált
tábla, szekvencia, index-szervezett tábla,
nézet, cluster,
partícionált
tábla, trigger, package, nem
partícionált index,
partícionált index
Lehetséges
válaszok:
a: -> 0; b: -> 1; c:
-> 1 vagy 2; d: -> 1 vagy több; e: -> 2
vagy több;
50ea_06
- Mi a különbség a
ritka és a sűrű index között?
Az elsődleges illetve
másodlagos indexek ritkák vagy sűrűk lehetnek?
50ea_07
- Az Oracle által
készített indexek ritkák vagy sűrűk?
Milyen
információkat tartalmaz a
sorazonosító (ROWID) az
Oracle-ben?
5.1.
Feladatok indexstruktúrák
használatával
Feladatok - Molina-Ullman-Widom:
Adatbázisrendszerek
megvalósítása
a "zöld könyv" 4.1, 4.2, 4.3, 4.4
és 5.4
fejezetei alapján
A fogalmakhoz jól használható Oracle
dokumentáció: "Concepts" HTML
PDF
ebben Part II. Oracle
Database
Architecture - 5. Schema Objects
51ind_01 - B-fa
- Az alábbi
táblára
készítsen B-fa indexet a dolgozó
tábla DKOD
oszlopára.
Tegyük fel, hogy egy blokkba
3
bejegyzés fér el. Rajzolja fel
(kézzel)
a
fát.
DKOD
DNEV FIZETES FOGLALKOZAS
BELEPES OAZON
---------------------------------------------------
1
SMITH 800
CLERK
1980 20
2
ALLEN 1600
SALESMAN
1981
30
3
WARD 1250
SALESMAN
1981
30
4
JONES 2975
MANAGER
1981
20
5
MARTIN 1250
SALESMAN
1981
30
6
BLAKE 2850
MANAGER
1981
30
7
CLARK 2450
MANAGER
1981
10
8
SCOTT 3000
ANALYST
1982
20
9
KING 5000
PRESIDENT
1981
10
10
TURNER 1500
SALESMAN
1981
30
11
ADAMS 1100
CLERK
1983
20
12
JAMES 950
CLERK
1981
30
13
FORD 3000
ANALYST
1981
20
14
MILLER 1300
CLERK
1982
10
51ind_02 - B-fa
- Adott fába
beszúrás, törlés is
várható feladat a zh-ban...
51ind_03 - Bitmap
- Tegyük fel, hogy fenti
táblához a FOGLALKOZAS, a BELEPES
és az
OAZON
oszlopokra létezik bitmap
index (3 index). Készítsük el az
alábbi lekérdezésekhez
szükséges
bitvektorokat, majd végezzük el rajtuk a
szükséges műveleteket, és
adjuk meg azt
az előállt bitvektort, ami alapján a
végeredmény sorok
megkaphatók.
Ellenőrzésképpen
adjuk meg a
lekérdezést SQL-ben is!
a. ) Adjuk meg azoknak a dolgozóknak a
nevét, akik 1981-ben léptek be
és a foglalkozásuk
hivatalnok (CLERK), vagy a
20-as osztályon dolgoznak és a
foglalkozásuk MANAGER.
b.) Adjuk meg azoknak a dolgozóknak a
nevét, akik nem 1981-ben léptek be és
a 10-es
vagy a
30-as osztályon dolgoznak.
51ind_04 - Bitmap
- Tömörítse az előző
feladatban kapott
bitvektorokat a szakaszhossz kódolással.
51ea_05 - Bitmap
- Fejtsük vissza a következő,
szakaszhossz
kódolással
tömörített bitvektort:
11101101001011
51ea_06 - Hash
- Mutassuk meg, hogy mi
történik az alábbi ábra
kosaraival a következő beszúrások
és
törlések bekövetkeztével
a.) A g, h, i, j rekordok
beszúrása sorban a 0, 1, 2, 3
kosarakba
b.) Az a és b rekordok
törlése
c.) A k, l, m, n rekordok
beszúrása sorban a 0, 1, 2, 3
kosarakba
d.) A c és d rekordok
törlése
5.2.
Feladatok a kiterjesztett
relációs algebrai műveletekkel
Feladatok - Molina-Ullman-Widom:
Adatbázisrendszerek
megvalósítása
a "zöld könyv" 6.1 fejezete
alapján
Segédlet:(Nikovits Tibor
EA-ból) Lekerdezes.pdf
(.doc)
Az alábbi lekérdezéseket
fejezzük ki SQL SELECT-tel, majd írjuk
át a lekérdezést
kiterjesztett relációs algebrai
operátorokat
felhasználó kifejezéssé, majd
rajzoljuk fel
a kifejezésfát is.
52alg_1
- Adjuk meg
osztályonként az osztály
nevét és az ott dolgozók
számát
a dolgozók
száma szerint növekvő sorrendben.
52alg_2
- Adjuk meg azoknak az osztályoknak a
nevét, ahol
az átlagfizetés nagyobb mint 2000.
52alg_3
- Adjuk meg azoknak a foglalkozásoknak
a nevét,
amelyek a 10-es és 20-as
osztályon is
előfordulnak. Ismétlődések ne legyenek
a végeredményben.
5.3.
Feladatok heurisztikán
alapuló algebrai optimalizálásra
Feladatok - Molina-Ullman-Widom:
Adatbázisrendszerek
megvalósítása
a "zöld könyv" 7.2 és 7.3
fejezetei alapján
Segédlet:(Nikovits Tibor
EA-ból) rAlgOpt.pdf (.rtf)
53opt_1
- Hozzunk létre a DEPT, EMP,
SALGRADE táblákból a saját
táblákat.
Relációsémák:
OSZTALY(OAZON, ONEV, HELY)
DOLGOZO(DKOD, DNEV, FIZETES, FOGLALK,
BELEPES, OAZON)
FIZKAT(KATEGORIA, ALSO, FELSO)
- Fejezzük ki SQL SELECT-tel
(alkérdések illetve nézetek
használata nélkül) és
projekció-szelekció-direktszorzat
alakú kiindulási relációs
algebrai kifejezéssel,
hogy kik azok a dolgozók
(mi a nevük), akik tanárok, a
fizetésük a 2-es
kategóriába esik
és valamelyik ’Debrecen’
helyszínű osztályon dolgoznak.
- Rajzoljuk fel a relációs
algebrai kifejezést reprezentáló
lekérdezőfát, majd
alakítsuk át
hatékonyabb relációs algebrai
kifejezést
reprezentáló lekérdezőfává,
vagyis végezzük
el a heurisztikus
szabályokon alapuló algebrai
optimalizálást!
- Milyen relációs
algebrai
azonosságokat
használtunk fel az egyes
lépéseknél?
_______________________________________________________
6. gyak. (2008.X.14/16)
- Lekérdezések
optimalizálása
ZH előtti utolsó gyakorlat! Előzetes ZH infók
megbeszélése, mi várható?
Az
eddigi fogalmak átismétlése,
ismétlő kérdések, elmaradt feladatok
pótlása.
Ami
még a ZH-ban várható: Join műveletek
algoritmusai és azok
költségei.
Hash alapú (Hash-Join), rendezés
alapú
(Sort-Merge), beágyazott ciklus
(Nested Loop) algoritmusok. A költségek
kiszámolása konkrét
példák esetén.
>> ism. IV.
Témakör 4.8C.
Feladatok klaszterekre és az 6HF+
>> ism. IV.
Témakör 4.8D.
Feladatok partíciókra
>> 5.4.
Feladatok lekérdezések
végrehajtási
algoritmusaira
és költségbecslésekre
5.4.
Feladatok lekérdezések
végrehajtási algoritmusaira
és a műveletek
költségbecslésére
Feladatok - Molina-Ullman-Widom:
Adatbázisrendszerek
megvalósítása
a "zöld könyv" 6.3-6.7 és
7.4-7.6. fejezetei
alapján
Segédlet: VegrKolts.pdf
(.doc)
54opt_1
- Tegyük fel, hogy a dolgozó
tábla 14 sorból áll és
sorai egyenként 1 blokkot
foglalnak el, és a
memóriánk 4 blokknyi.
Rendezzük a tábla
sorait fizetés
szerint egy rendezés alapú
algoritmussal.
Adjuk meg az
első menet után a
rendezett részlistákat (elég
a dnev,
fizetes).
Hány menetes algoritmusra
lesz
szükségünk?
54opt_2
- Tegyük most fel, hogy a
memóriánk 6
blokknyi és van még egy
vásárlás tábla,
aminek a
szerkezete a következő: VASARLAS(dkod, cikk, mennyiseg, ar).
Ennek a
táblának a sorai is 1 blokkot foglalnak
és a tábla kb. 120 sorból
áll.
Mennyi a műveletigénye
- egy hash
alapú,
- egy rendezés
alapú
és
- egy
beágyazott ciklusos algoritmusnak,
ami arra válaszol, hogy az
egyes
dolgozók összesen mennyit
költöttek?
Feltehetjük, hogy az
összegeket gyűjtő
számlálók még
beférnek a memóriába
a blokkok mellett.
Írjuk
le röviden, hogy az egyes algoritmusok hogyan
fognak működni.
Adjuk meg a kosarakat a
hasítás alapú
algoritmus első menete után.
_______________________________________________________
7. gyak. (2008.X.21-kedd ill.
XI.6-csüt)
- I.ZH
>> lásd AB
szakirány (IP-abATM) illetve C szakirány
(IP-cAMÜ)
_______________________________________________________
8. gyak. (XI.4)
ill. 9.gyak.(XI.11/13)
- Lekérdezések
optimalizálása
>> 5.5.
Feladatok végrehajtási tervek
előállítására és
megváltoztatására
tippek segítségével
>> 5.6.
Végrehajtási tervek
megváltoztatása
statisztikák létrehozásával
és
törlésével
>> 5.7.
SQL utasítás rekonstruálása
a végrehajtási terv alapján
és a KÖTELEZŐ
7HF
5.5.
Feladatok végrehajtási tervek
előállítására
és megváltoztatására tippek
(hint)
segítségével
Feladatok - Nikovits Tibor
Információkezelés gyakorlatai
alapján
Segédanyagok:
>> Oracle Doc. -
Performance Tuning Guide HTML
PDF
>> Nikovits Tibor EA-ból: Lekerdezes.pdf
(.doc)
hintek.txt
tervek1.txt
tervek2.txt
tervek3.txt
Előkészítés:
- A gyakorlatokon az oradb
adatbázisban az sqldeveloper-rel
dolgozunk, ahol
a SELECT-teket
az Execute
Statement
(F9) hajtjuk végre és
az eredményt
a Result
ablakban látjuk, a
végrehajtási terveket az Execute Explain
Plan
(F6)
segítségével
készítjük el,
annak eredményét pedig az Explain
ablakban találjuk.
- Mivel a Result
és az Explain ablakok
eredményét nem tudjuk beadandókban
illetve ZH-ban beküldeni,
ezért a beadandókhoz Run Script
(F5)-tel futtassuk
a SELECT
lekérdezést (ahogyan a PL/SQL
-t). Ekkor a Script
Output-ból
ki tudjuk vágni az
eredményt a beadandó egyszerű
szöveges .txt állományba.
- A kötelezően
beadandó feladatoknál a
lekérdezést (hintekkel együtt), annak
végeredményét, és a
végrehajtási terveket egy szöveges
állományba tedd be.
- Ehhez,
vagyis a
végrehajtási tervek
fastruktúrájának szöveges
megjelenítéséhez:
- Hozzuk létre a
PLAN_TABLE
nevű táblát az utlxplan.sql
script
segítségével,
majd
készítsük el az
utasítások végrehajtási
tervét a
a
PLAN_TABLE táblába:
EXPLAIN PLAN SET statement_id='utasitas_egyedi_neve' INTO
plan_table
FOR SELECT ...
- Ezután vegyük
is ki a terveket a
táblából a megfelelő
lekérdezéssel
Emlékeztetőül a
hierarchikus
szerkezetű adatok lekérdezése SELECT
utasítás
segítségével: a hierarchia
gyökerét (gyökereit) a START
WITH-el,
a szülő és gyermek
sorok
közti kapcsolatot a CONNECT
BY-al kell megadni,
SET PAGESIZE 40
SET LINESIZE 132
COLUMN terv FORMAT
A50
COLUMN feltetel
FORMAT A80 TRUNCATED
COLUMN "feltetel
(access--filter)" FORMAT A80 TRUNCATED
SELECT
LPAD(' ', 2*(level-1))||operation||' + '||options||' + '||object_name
terv,
access_predicates||' -- '||filter_predicates "feltetel (access--filter)"
FROM plan_table
START WITH id = 0
AND statement_id = 'utasitas_egyedi_neve'
CONNECT BY PRIOR
id = parent_id AND statement_id = 'utasitas_egyedi_neve'
ORDER SIBLINGS BY
position;
- Figyeljünk oda, hogy a
fenti
EXPLAIN PLAN SET statement_id='XXX'
az 'XXX'-k
helyére minden feladatnál új
statement_id-t adjunk meg, és
ugyanezt az egyedi nevet
haszáljuk a tervek
megjelenítésénél
a SELECT
...
FROM plan_table START
WITH id = 0
AND statement_id = 'XXX'
CONNECT BY PRIOR
id = parent_id AND statement_id = 'XXX'...
- Vagy használhatjuk a
dbms_xplan package-et is, részletek lásd expl.sql
végén,
valamint az Oracle 10g Doksikban:
Performance Tuning Guide HTML
PDF
Lekérdezések az Oracle EMP, DEPT,
SALGRADE alaptáblái alapján
55plan_1
- Az ORAUSER
felhasználó
EMP, DEPT
és SALGRADE
(fizetési kategóriák)
tábláiból hozzatok
létre saját példányokat,
és
ezekre vonatkozóan:
- Adjuk meg azoknak az
osztályoknak a neveit, amelyeknek
van olyan dolgozója,
aki az 1-es fizetési
kategóriába esik.
55plan_2
- Ezután hozzunk létre
indexet valamelyik
táblához, majd adjuk meg a rendszer
által létrehozott
új
végrehajtási tervet. Olyan indexeket hozzunk
létre,
amit
a lekérdezésben
használni tud
a rendszer és ez legyen is látható az
új
tervből.
Lekérdezések NIKOVITS.CIKK,
SZALLITO, PROJEKT,
SZALLIT táblái alapján
A NIKOVITS
felhasználó tulajdonában
vannak a következő táblák:
CIKK(ckod,
cnev, szin, suly)
SZALLITO(szkod,
sznev, statusz, telephely)
PROJEKT(pkod,
pnev, helyszin)
SZALLIT(szkod,
ckod, pkod, mennyiseg, datum)
A táblákhoz indexek is vannak
létrehozva, ezek tulajdonságait
a katalógusból nézhetitek meg, ha
szükségetek van rá.
55plan_3
- Adjuk meg a következő
lekérdezéseket
és a hozzájuk tartozó
végrehajtási
tervek fa
struktúráját. Minden esetben
lehet hinteket használni.
- Adjuk meg a piros cikkekre vonatkozó
szállitások
összmennyiségét.
a) Adjuk meg úgy a
lekérdezést, hogy egyik
táblára se
használjon indexet az oracle.
b) Adjuk meg úgy a
lekérdezést, hogy csak az egyik
táblára
használjon indexet az oracle.
c) Adjuk meg úgy a
lekérdezést, hogy mindkét
táblára
használjon indexet az oracle.
d) Adjuk meg úgy a
lekérdezést, hogy a két
táblát
SORT-MERGE
módszerrel kapcsolja össze.
e) Adjuk meg úgy a
lekérdezést, hogy a két
táblát
NESTED-LOOPS
módszerrel kapcsolja össze.
f) Adjuk meg úgy a
lekérdezést, hogy a két
táblát
NESTED-LOOPS
módszerrel kapcsolja össze,
és ne
használjon indexet.
55plan_4
- Adjuk meg azon
szállítások
összmennyiségét, ahol ckod=1
és szkod=2.
a) Adjuk meg úgy a
lekérdezést, hogy ne használjon
indexet.
b) A
végrehajtási tervben két
indexet használjon, és képezze a
sorazonosítók metszetét
(AND-EQUAL).
5.6.
Végrehajtási tervek
megváltoztatása statisztikák
létrehozásával és
törlésével
Feladatok - Nikovits Tibor
Információkezelés gyakorlatai
alapján
Segédanyagok:
>> Oracle Doc. -
Performance Tuning Guide HTML
PDF
>> Nikovits Tibor EA-ból: tervek3.txt
56stat_1 (Papíron oldjuk meg! Vizsgán is
várható feladat!)
- Hozzunk létre 10 intervallumos
magasság
alapú hisztogramot az alábbi
eloszlású
adatokra vonatkozóan, vagyis adjuk
meg az egyes intervallumok végpontjait.
1-100 (2), 101-300 (1), 301-400
(4), 401
(200)
(Az előfordulások
száma zárójelben szerepel, pl. 1-100 (2)
azt jelenti, hogy
1 és 100 között minden
érték kétszer fordul elő, vagyis 1 és
100
között 200
előfordulás van, tehát a táblának összesen 1000 sora van).
56stat_2 (Papíron oldjuk meg! Vizsgán is
várható feladat!)
- Hozzunk létre 10 intervallumos
szélesség (gyakoriság)
alapú hisztogramot
is
ugyanezekre az adatokra.
1-100 (2), 101-300 (1), 301-400
(4), 401
(200)
56stat_3
-
Hozzatok létre egy saját
példányt a
nikovits.szallit táblából, indexet a
datum
oszlopra,
majd adjatok meg egy olyan
lekérdezést, amelyik egy általatok
választott napra vonatkozóan
a
szállítások
összmennyiségét adja meg.
Statisztikák
létrehozásával illetve
törlésével
(lásd tervek3.txt)
érjétek el
(hint használata nélkül), hogy az Oracle
egyszer
használjon
indexet, máskor pedig
(hisztogram
létrehozása vagy törlése
után) ne
használjon.
5.7. SQL
utasítás rekonstruálása a
végrehajtási terv alapján
Feladatok - Nikovits Tibor
Információkezelés gyakorlatai
alapján
Segédanyagok:
>> Oracle Doc. -
Performance Tuning Guide HTML
PDF
>> Nikovits Tibor EA-ból: tervek4.txt
Lekérdezések az Oracle demo
táblák alapján (lásd
AB_plsema08s.html)
57vterv_1
- Adjuk meg azoknak a vevőknek a nevét
(SH.CUSTOMERS),
akik
nőneműek (cust_gender =
'F') és szinglik
(cust_marital_status =
'single'),
vagy 1917 és 1920
között
születtek.
a) Vegyük rá az
Oracle-t, hogy a
meglévő bitmap indexek alapján érje el
a
tábla sorait.
b) Vegyük rá, hogy
ne használja ezeket az indexeket.
57vterv_2
- Adjunk meg egy olyan
lekérdezést az sh
tábláira (hintekkel együtt ha
szükséges),
aminek az alábbi lesz a
végrehajtási terve:
TERV (OPERATION + OPTIONS + OBJECT_NAME)
--------------------------------------------------------------
SELECT STATEMENT + +
SORT + ORDER BY +
TABLE
ACCESS + BY INDEX ROWID + CUSTOMERS
BITMAP CONVERSION + TO ROWIDS +
BITMAP AND + +
BITMAP INDEX + SINGLE VALUE + CUSTOMERS_MARITAL_BIX
BITMAP OR + +
BITMAP INDEX + SINGLE VALUE + CUSTOMERS_YOB_BIX
BITMAP INDEX + SINGLE VALUE
+ CUSTOMERS_YOB_BIX
BITMAP INDEX + SINGLE VALUE + CUSTOMERS_YOB_BIX
7HF:
Kötelezően beadandó feladatok
Összesen 10 pont szerezhető, amely C-szakirányon
a két gyak.ZH pontjahoz
és az AB-szakirányon pedig az
IP-abATM
vizsgazh
értékébe fog
beszámítani.
A különböző
végrehajtási tervek
előállításához hinteket
használjatok ha szükséges.
Az alábbi feladatoknál beküldendő
- SELECT
/*+ tipp lista */ ... vagyis
a lekérdezés
(hintekkel együtt),
- lekérdezés outputja
(ha az
eredménytábla nagy, akkor annak csak az első 5
sora),
- végrehajtási tervek
fastruktúrájának szöveges
megjelenítése (lásd Előkészítés és
lásd végrehajtási
tervekre példák: tervek1.txt
tervek2.txt
tervek3.txt
tervek4.txt)
mindezt egy szöveges
állományba
tegyétek bele. Kérem, hogy a
fájlban a
feladatok
adott sorrendjét
kövessétek, valamint megjegyzésekkel
világosan
különítsétek el, hogy
melyik rész
melyik feladathoz tartozik. A
szövegfájl első
sora egy olyan megjegyzés
legyen, amely tartalmazza a
hallgató nevét és
az EHA
kódját (ETR
azonosítóját).
Beküldése: Beadandók,
géptermi ZH feladatok beküldése
(ablinux-ra ftp-vel).
Határidő: 2008. november 24. hétfő
éjfélig a gyakorlat vezetőnek beküldve
lásd kotelezo_feladat_xplan.txt,
vagyis az alábbi 1-6. feladatok:
Lekérdezések
NIKOVITS.CIKK,
SZALLITO, PROJEKT,
SZALLIT táblái alapján
1.feladat (1 pont)
- Adjuk meg a Pecs-i telephelyű
szállítók által
szállított piros cikkek
összmennyiségét.
a) Adjuk meg úgy a
lekérdezést, hogy a
szallit táblát először a cikk
táblával join-olja az oracle.
b) Adjuk meg úgy a
lekérdezést, hogy a
szallit táblát először a szallito
táblával join-olja az oracle.
2.feladat (1 pont)
- Adjuk meg azon
szállítások
összmennyiségét, ahol ckod=1 vagy
szkod=2.
a) Adjuk meg úgy a
lekérdezést, hogy
ne használjon indexet.
b) A végrehajtási
tervben két indexet
használjon, és képezze a kapott sorok
unióját
(CONCATENATION).
Lekérdezések az Oracle demo
táblák alapján (lásd
AB_plsema08s.html)
3.feladat (2 pont)
- Adjuk meg egy féléves
időszakra
(illetve egy másik féléves időszakra) vonatkozóan az
eladások (SH.SALES)
összmennyiségét, úgy, hogy az
Oracle ne
használjon indexet és
a) pontosan
2 partíciót olvasson a
táblából, illetve
b) pontosan
3 partíciót olvasson a
táblából.
Lásd partition_start
és partition_stop
oszlopokat a PLAN_TABLE-ben!
4.feladat (2 pont)
- Adjunk meg egy olyan
lekérdezést az sh
tábláira (hintekkel együtt ha
szükséges), aminek
az alábbi lesz a
végrehajtási terve:
TERV
(OPERATION + OPTIONS + OBJECT_NAME)
-------------------------------------------------------------
SELECT
STATEMENT + +
HASH + GROUP BY +
HASH JOIN + +
INLIST ITERATOR + +
TABLE ACCESS + BY
INDEX ROWID + CUSTOMERS
BITMAP
CONVERSION + TO ROWIDS +
BITMAP INDEX + SINGLE VALUE + CUSTOMERS_YOB_BIX
PARTITION RANGE + ALL +
TABLE ACCESS + FULL
+ SALES
5.feladat (2 pont)
- Adjunk meg egy olyan
lekérdezést az sh
tábláira (hintekkel együtt ha
szükséges), aminek
az alábbi lesz a
végrehajtási terve:
TERV
(OPERATION + OPTIONS + OBJECT_NAME)
------------------------------------------------------------
SELECT
STATEMENT + +
SORT + AGGREGATE +
HASH JOIN + +
TABLE ACCESS + FULL + PRODUCTS
HASH JOIN + +
TABLE ACCESS + BY INDEX ROWID +
CUSTOMERS
BITMAP CONVERSION + TO ROWIDS
+
BITMAP INDEX +
SINGLE VALUE + CUSTOMERS_YOB_BIX
PARTITION RANGE + ALL +
TABLE ACCESS + FULL + SALES
6.feladat (2 pont)
- Adjunk meg egy olyan
lekérdezést az sh
tábláira (hintekkel együtt ha
szükséges), aminek
az alábbi lesz a
végrehajtási terve:
TERV (OPERATION + OPTIONS + OBJECT_NAME)
-------------------------------------------------------------
SELECT
STATEMENT + +
SORT + ORDER BY +
HASH + GROUP BY +
HASH JOIN + ANTI +
PARTITION RANGE + SINGLE +
TABLE ACCESS + BY LOCAL INDEX ROWID + SALES
BITMAP CONVERSION + TO ROWIDS +
BITMAP INDEX + SINGLE VALUE + SALES_TIME_BIX
TABLE
ACCESS + FULL + CHANNELS