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 HTML   PDF  é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).
 
 Vissza az AB2 gyakorlat oldalára             Vissza a Kezdőlapra