TABLE ACCESS FULL HASH CLUSTER BY INDEX ROWID BY USER ROWID BY GLOBAL INDEX ROWID BY LOCAL INDEX ROWID

Hasonló dokumentumok
SELECT DISTINCT deptno FROM emp; (distinct) SELECT STATEMENT HASH UNIQUE TABLE ACCESS FULL EMP

Betekintés az SQL hangolásba Oracle környezetben

Indexek és SQL hangolás

Az indexelés újdonságai Oracle Database 12c R1 és 12c R2

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Adatbázisműveletek és lekérdezésoptimalizálás

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

Nem klaszterezett index. Klaszterezett index. Beágyazott oszlopok. Index kitöltési faktor. Indexek tulajdonságai

Nem klaszterezett index. Beágyazott oszlopok. Klaszterezett index. Indexek tulajdonságai. Index kitöltési faktor

Adatbáziskezelı-szerver SQL. Relációs adatbázis-kezelık. Relációs adatszerkezet. Házi feladat

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

Adatbáziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla

Adatbázis használat I. 2. gyakorlat

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

LEKÉRDEZÉSEK OPTIMALIZÁLÁSA

Adatbázisok* tulajdonságai

A könyv tartalomjegyzéke

Adatbázis kezelés Delphiben. SQL lekérdezések

Adattípusok. Max. 2GByte

Adatbázisok. 2. gyakorlat SQL november november 12. Adatbázisok 1 / 31

LBRA6i integrált rendszer

SQL. Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák

Adatbázis-kezelés. Harmadik előadás

30 MB INFORMATIKAI PROJEKTELLENŐR ADATBÁZISOK MEGVALÓSÍTÁSA (ADATBÁZISOK, ADATBÁZISKEZELŐK, ADATBÁZISOK FELÉPÍTÉSE, ADATBÁZISOK TERVEZÉSE)

Adatbázisok I. Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések

Adatbázis használat I. 2. gyakorlat

Tankönyv példák kidolgozása

Adatbázisok (relációs, objektum relációs, NoSQL) Adatbáziskezelő rendszerek Adatbázisok felépítése Adatbázisok tervezése

Indexek és Teljesítményoptimalizálás

Adattípusok. Max. 2GByte

SQL haladó. Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások

Java és web programozás

Gyakorlás: Hozzunk létre egy Alkalmazottak táblát AZO szám, Részleg szöveg, Munkakör szöveg és BelépésDátuma dátum típussal.

Adatbázis rendszerek SQL nyomkövetés

Adatbázisok elmélete 9. előadás

SQL jogosultság-kezelés. Privilégiumok Grant és Revoke Grant Diagrammok

Megtanuljuk, hogyan lehet egy web-alkalmazással adatbázishoz csatlakozni Pontosan megnézzük a PHP lehetőségeit o MySQL-hez o Oracle-höz

SQL PÉLDATÁR. készült a PTE TTK Iskolai informatika III. kurzus teljesítésére

SELECT. SELECT(projekció) FROM(forrás) WHERE(szűrés) GROUPBY(csoportosítás) HAVING(csoportok szűrése) ORDERBY(rendezés)

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1

INDEXSTRUKTÚRÁK III.

Relációs algebrai lekérdezések átírása SQL SELECT-re (példák)

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE) október október 22. Adatbázisok 1 / 14

Lekérdezések az SQL SELECT utasítással

5. téma XML DB. Az adatkezelés és XML kapcsolata. Miért fontos az XML használata az adatbázis kezelésben?

LOGISZTIKAI ADATBÁZIS RENDSZEREK UNIÓ, ALLEKÉRDEZÉSEK

Adatbázis használat I. 5. gyakorlat

Táblakezelés: Open SQL Internal table. Tarcsi Ádám: Az SAP programozása 1.

5.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Nézetek és indexek. AB1_06C_Nézetek_Indexek - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján

Indexek, tömörítés és más állatfajták

SQLServer. Particionálás

SQL DDL-2 (aktív elemek) triggerek

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

ADATBÁZISOK I. Az esetleges hibákat kérlek a csongor@csongorbokay.com címen jelezd! Utolsó módosítás: március 20.

Marton József BME-TMIT. Adatbázisok VITMAB november 11.

Adatok szűrése, rendezése

Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése

Adatbázisok tavaszi félév Vizsgatételsor

AB1 ZH mintafeladatok. 6. Minősítse az állításokat! I-igaz, H-hamis

Adatbázisban tárolt kollekciók

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

A trigger egy aktualizálási művelet esetén végrehajtandó programrészletet definiál. Alakja:

RELÁCIÓS LEKÉRDEZÉSEK OPTIMALIZÁLÁSA. Marton József november BME TMIT

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

Exadata hibrid oszlopos adattömörítés automatizálása; DB 12c partition merge

Adattárház tiszta alapokon Oracle Day, Budapest, november 8.

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Adatbázisok elmélete 9. előadás

BASH script programozás II. Vezérlési szerkezetek

LEKÉRDEZÉSEK SQL-BEN. A relációs algebra A SELECT utasítás Összesítés és csoportosítás Speciális feltételek

BEVEZETÉS Az objektum fogalma

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

Adatbázisok biztonsága

Lekérdezések az SQL-ben 1.rész

Az SQL nyelv Structured Query Language (Struktúrált lekérdező nyelv)

Az SQL adatbázisnyelv: DML

Access alapok. Megnevezés Művelet Minta. Új adatbázis létrehozása. Új / Üres adatbázis.. Tábla létrehozása tervező nézetben.

Lekérdezések az SQL SELECT utasítással. Copyright 2004, Oracle. All rights reserved.

Tranzakció-kezelés, alapfogalmak. Vassányi István, 2012.

Lekérdezések az SQL-ben 1.rész

Valós idejű megoldások: Realtime ODS és Database In-Memory tapasztalatok

SQL DDL-1: táblák és megszorítások

STRUCTURED QUERY LANGUAGE(SQL) - ALAPOK

ELTE SAP Excellence Center Oktatóanyag 1

Kalmár György Adatbázis alapú rendszerek

Több tábla összekapcsolásán alapuló lekérdezések. Copyright 2004, Oracle. All rights reserved.

SQL parancsok feldolgozása

LOGISZTIKAI ADATBÁZIS RENDSZEREK JOIN, AGGREGÁCIÓ

Analitikus és egyéb hasznos függvények Oracle 11g alatt

Az Oracle rendszer komponensei

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

Bevezetés: az SQL-be

Java és web programozás

4. Előadás Az SQL adatbázisnyelv

Átírás:

Az eddigi pédákban szereplo muveletek (operation és option együtt) (Az összes létezo lehetoséget lásd -> Performance Tuning Guide 19.9 fejezet, 19.3. táblázat) TABLE ACCESS FULL HASH CLUSTER BY INDEX ROWID BY USER ROWID BY GLOBAL INDEX ROWID BY LOCAL INDEX ROWID PARTITION RANGE ALL -- összes partíció olvasása PARTITION RANGE SINGLE -- egyetlen partíció olvasása PARTITION RANGE ITERATOR -- több partíció olvasása INLIST ITERATOR -- muveletek ismétlése SORT AGGREGATE UNIQUE GROUP BY JOIN ORDER BY -- ha csak egy sor lesz a csoportosítás végén -- ismétlodések megszüntetéséhez -- ha több csoport lesz -- elorendezés a join-hoz HASH UNIQUE HASH GROUP BY UNION-ALL MINUS CONCATENATION VIEW FILTER NESTED LOOPS MERGE JOIN HASH JOIN HASH JOIN OUTER HASH JOIN ANTI HASH JOIN SEMI kellenek -- unió képzése két sorhalmazból -- egy sorhalmaz szurése -- join muvelet -- rendezett részek összefuttatása -- not exist-hez lehet jó -- ha a join után csak az egyik tábla adatai INDEX FULL SCAN -- teljes index végigolvasása növekvo sorrendben INDEX FULL SCAN DESCENDING -- teljes index végigolvasása csökkeno sorrendben INDEX FAST FULL SCAN -- teljes index végigolvasása, egyszerre több blokkot olvasva INDEX RANGE SCAN -- intervallum keresés növekvo sorrendben (DESCENDING -> csökkeno) INDEX UNIQUE SCAN -- egyedi érték keresés INDEX SKIP SCAN -- több oszlopos index olvasása, az elso oszlopok ismerete nélkül AND-EQUAL BITMAP INDEX SINGLE VALUE BITMAP AND BITMAP OR BITMAP CONVERSION TO ROWIDS -- sorazonosító halmazok metszetét képezi -- egyetlen bitvektor visszaadása -- bitmapek közötti logikai muvelet -- bitmapek közötti logikai muvelet -- bitmap átalakítása sorazonosítóvá Page 1

BITMAP CONVERSION FROM ROWIDS -- sorazonosító átalakítása bitmappé BITMAP CONVERSION COUNT -- ha csak a sorazonosítók számára van szükség INLIST ITERATOR -- muveletek ciklusban Tippek (hint) adása az optimalizálónak Mindig csak arra az utasitás blokkra vonatkoznak, amiben szerepelnek. Az utasitás blokk a következok egyike lehet: - Egyszeru SELECT, UPDATE, DELETE INSERT utasitas - Komplex utasitásban a subquery, vagy a kulso utasitás (pl. INSERT... SELECT...) - Összetett utasitás egyik része (pl. SELECT... UNION SELECT... esetén) A tipp csak közvetlenül az utasitás kulcsszava után jöhet megjegyzésben. [SELECT DELETE UPDATE INSERT] /*+ tipp lista */ (a '+' elott nincs szoköz!!! ) Ha hiba van a hint-ben az oracle figyelmen kívül hagyja de nem jelez hibát. Példák: SELECT /*+ tipp lista */ * FROM emp WHERE... SELECT /*+ tipp lista */ * FROM emp WHERE deptno IN ( SELECT /*+ tipp lista */ deptno FROM...) INSERT /*+ tipp lista */... SELECT /*+ tipp lista */... SELECT /*+ tipp lista */... UNION SELECT /*+ tipp lista */... Fontos! Ha minosített tábla szerepel a lekérdezésben akkor használjunk aliast, pl. SELECT /*+ full(c) */... FROM nikovits.cikk c... A legfontosabb tippek: (a teljes lista -> SQL Reference) ALL_ROWS Költseg alapú optimalizalast valaszt es azon belul is a teljes lekerdezesre optimalizal. FIRST_ROWS(n) A legjobb valaszidore optimalizál. Az lekérdezés elso n sorát a leheto leggyorsabban próbálja meg visszaadni. Ha nem adjuk meg n-et, akkor n=1-et tekinti. FULL(tabla) vagy FULL(aliasnev) Nem hasznal indexet, hanem full table scant. CLUSTER(tabla) Csak clusteren lévo tábláknál van értelme. HASH(tabla) Csak hash clusteren lévo táblánál van értelme. INDEX(tabla [indexlista]) A tablat index alapjan eri el. Ha nem adunk meg index nevet (vagy többet adunk meg) Page 2

akkor a legolcsóbb költségu indexet (a felsoroltakbol) használja. INDEX_ASC(tabla [indexlista]) Növekvo sorrendben eri el az index bejegyzeseket. INDEX_DESC(tabla [indexlista]) Megfordítja az alapértelmezett index bejárási sorrendet. Csökkeno sorrendben éri el az index bejegyzéseket. (Illetve csökkeno indexnél növekvoben.) INDEX_COMBINE(tabla [indexlista]) Bitmap indexek segítségével próbálja meg elérni az adatokat. INDEX_FFS(tabla [indexlista]) Fast full index scan-re utasítja az optimalizálót a teljes tábla olvasás helyett. INDEX_JOIN(tabla [indexlista]) Több index használatával és a sorazonosítók join-olásával érje el a táblát. AND_EQUAL(tabla [indexlista]) Több index egyideju használatával éri el a táblát. A sorazonosítók metszetét képezi. NO_INDEX(tabla [indexlista]) A megadott indexek használatáról lebeszéli az optimalizálót. NO_INDEX_FFS(tabla [indexlista]) A megadott indexek használatáról lebeszéli az optimalizálót. NO_EXPAND Ha a lekérdezésben OR vagy IN szerepel, akkor az optimalizáló hajlamos az egyes esetek szerint külön-külön keresni (pl. index használatával). Ez a hint errol beszéli le az optimalizálót. USE_CONCAT Az OR feltételekbol uniót hoz létre, és így hajtja végre a lekérdezést. LEADING(táblalista) A megadott táblákkal kezdi a lekérdezés végrehajtását. (Hasonló az ORDERED-hez) ORDERED A táblákat abban a sorrendben fogja join-olni, ahogy azok a FROM után megjelennek. USE_HASH(táblalista) A megadott tablakat hash join-nal join-olja a többi adatforrashoz. NO_USE_HASH(táblalista) Az elozo ellentéte. USE_NL(táblalista) A megadott tablakat nested looppal join-olja a többi adatforrashoz. A Page 3

megadott tabla lesz a belso ciklus tablaja. NO_USE_NL(táblalista) Az elozo ellentéte USE_MERGE(táblalista) A megadott tablakat sort-merge-el join-olja a többi adatforrashoz. NO_USE_MERGE(tablalista) Az elozo ellentéte. NL_SJ, HASH_SJ, MERGE_SJ NL_AJ, HASH_AJ, MERGE_AJ A fentieket az alkérdésben lehet hintként megadni, és ekkor (ha lehetséges) az oracle a megfelelo algoritmussal fogja a semi-joint, illetve anti-joint elvégezni. CURSOR_SHARING_EXACT Arra utasítja az oracle-t, hogy semmiképpen ne cserélje le az utasítás elemzése közben a literálokat bind változóra. Amúgy ezt lehet, hogy megtenné mivel ezzel csökkenne az újraelemzések esélye. (lásd -> CURSOR_SHARING init paraméter) DRIVING_SITE(tabla) Elosztott lekérdezésnél van értelme. Arra utasítja az optimalizálót, hogy a megadott tábla adatbázisában hajtsa végre a muveletet. (pl. join esetén távoli táblák között) DYNAMIC_SAMPLING(tabla n) ahol 0 <= n <= 10 Menet közben próbál meg minta alapján döntéseket hozni a szelektivitásra vonatkozóan. Minél nagyobb az n értéke, annál nagyobb mintát használ. CACHE(tabla) Hatasara a tabla blokkjai a buffer cache LRU listajanak "friss" vegere kerulnek. Kis tablaknal hasznos, hogy sokaig csücsülhessenek a bufferben. NOCACHE(tabla) Hatasara a tabla blokkjai a buffer cache LRU listajanak "régi" vegere kerulnek. Alapertelmezes szerint is ide kerulnenek. APPEND INSERT utasításban az utolsó blokk utáni területre teszi be az adatokat, és nem a blokkokban meglévo szabad helyekre. Ezáltal gyorsabb lesz, de pazarlóbb. NOAPPEND A blokkok meglévo üres helyeit is kihasználja. (Illetve letiltja a párhuzamos insert-et) MERGE(V) V egy nézet neve. A nézet kiértékelésének egyik módja a nézet merge-elése a fo lekérdezésbe. Erre utasítja az optimalizálót. Inline nézet esetén a hintet Page 4

beírhatjuk a nézet blokkjába (paraméter nélkül), vagy a fo lekérdezésbe (paraméterrel). NO_MERGE(V) Az elozo ellentétére veszi rá az optimalizálót. NO_QUERY_TRANSFORMATION Az optimalizáló képes arra, hogy a lekérdezést valamilyen módon átalakítsa, és azt hajtsa végre. Ilyen átalakítás például az OR-expansion, View-merging, Subquery-unnest, Star-transformation, Materialized view-rewrite. A hint ezekrol beszéli le az optimalizálót. A fenti átalakítások mindegyike külön-külön is kérheto illetve letiltható egy hinttel. USE_CONCAT - NO_EXPAND, MERGE - NO_MERGE, UNNEST - NO_UNNEST, STAR_TRANSFORMATION - NO_STAR_TRANSFORMATION, REWRITE - NO_REWRITE RULE Szabály alapú optimalizálást használ, de ez a hint már nem javasolt. Page 5