Bevezetés
a költség alapú
tervválasztásba III. SQL
utasítás rekonstruálása a
végrehajtási terv alapján _______________________________________________________________ Segédanyagok:
>> Oracle Doc. -
Performance Tuning Guide HTMLPDF
és itt 13-19. fejezetek,
>> Nikovits Tibor: hintek.txt
és tervek4.txt _______________________________________________________________ A zh és
beküldendő
feladatoknál egy
szöveges állományba
bemásolva
beküldendő:
1.) SELECT
/*+ tipp lista */ ... vagyis
a lekérdezés
(hintekkel együtt),
2.) lekérdezés
outputja
(ha az
eredménytábla nagy, akkor annak az első
5
sora),
3.) végrehajtási
tervek
fastruktúrájának szöveges
megjelenítése (lásd 8.gyak#elok)
- 1.lépés:
Készítsük el az
utasítások végrehajtási
tervét a
a
PLAN_TABLE
táblába:
EXPLAIN
PLAN FOR SELECT ...
- 2.lépés: A
végrehajtási tervek
megjelenítése a
dbms_xplan package
segítségével:
SELECT
plan_table_output FROM table(dbms_xplan.display); _______________________________________________________________ Lekérdezések
az Oracle SH séma demo
táblái alapján
4.1.feladat:
- 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.
4.2.feladat:
- 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.3.feladat:
- 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
4.4.feladat:
- 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
4.5.feladat:
- 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
4.6.feladat:
- 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
_______________________________________________________________ Kérem, hogy a mai
gyakorlat
lekérdezéseit
és
végrehajtási terveit a mai óra
végén
vagy legkésőbb a
következő gyakorlatig küldje be emailben
"<ehakod>_10gy.txt"
nevű szöveges fájlban (ahol az
<ehakod>
helyére a saját ETR
azonosító
kerüljön).