The Underestimated Subquery Factoring Clause

Größe: px
Ab Seite anzeigen:

Download "The Underestimated Subquery Factoring Clause"

Transkript

1 The Underestimated Subquery Factoring Clause Philipp Salvisberg Senior Consultant DOAG Konferenz Mannheim, 16. November 2006 Basel Baden Bern Lausanne Zürich Düsseldorf Frankfurt/M. Freiburg i. Br. Hamburg München Stuttgart Wien

2 Zu meiner Person Senior Consultant bei der Trivadis AG, Zürich Betriebsökonom HWV Schwerpunkt Oracle Application Development Application Performance Management Business Intelligence 18 Jahre Erfahrung mit Oracle The Underestimated Subquery Factoring Clause

3 Agenda Einführung Sales History Tuning Fall Komplexe Abfragen Daten sind immer im Spiel. Tipps & Tricks Zusammenfassung The Underestimated Subquery Factoring Clause

4 Subquery Factoring Klausel (With Klausel) Syntax (seit 9i Release 1 gemäss ANSI SQL99 Standard) WITH query_name AS (subquery) [, query_name AS (subquery) ] SELECT... Features Bezeichnung einer Subquery als query_name Mehrfache Verwendung einer query_name, sogar in anderen, nachfolgend definierten Subqueries CBO behandelt eine Subquery als Inline View oder Temporary Table Einschränkungen Jede query_name ist mindestens einmal zu verwenden Maximal eine Subquery Factoring Klausel per SQL Statement Keine Unterstützung der RECURSIVE Klausel (ANSI Pendant zu CONNECT BY START WITH) The Underestimated Subquery Factoring Clause

5 NF9i Beispiel WITH emp_sal AS ( SELECT e.deptno, d.dname, SUM(e.sal) AS sal FROM emp e INNER JOIN dept d ON e.deptno = d.deptno GROUP BY e.deptno, d.dname ), avg_sal AS ( SELECT AVG(sal) AS avgsal FROM emp_sal ) -- main SELECT * FROM emp_sal CROSS JOIN avg_sal WHERE emp_sal.sal < avg_sal.avgsal ORDER BY emp_sal.dname; Mehrfache Verwendung DEPTNO DNAME SAL AVGSAL ACCOUNTING SALES The Underestimated Subquery Factoring Clause

6 NF9i Beispiel Execution Plan Id Operation Name Rows Bytes Cost SELECT STATEMENT 10 1 TEMP TABLE TRANSFORMATION emp_sal 2 LOAD AS SELECT 3 HASH GROUP BY NESTED LOOPS TABLE ACCESS FULL EMP TABLE ACCESS BY INDEX ROWID DEPT * 7 INDEX UNIQUE SCAN PK_DEPT SORT ORDER BY NESTED LOOPS avg_sal VIEW SORT AGGREGATE VIEW TABLE ACCESS FULL SYS_TEMP_ * 14 VIEW TABLE ACCESS FULL SYS_TEMP_ Predicate Information (identified by operation id): access("e"."deptno"="d"."deptno") 14 - filter("emp_sal"."sal"<"avg_sal"."avgsal") The Underestimated Subquery Factoring Clause

7 Subquery als Inline View betrachten WITH emp_sal AS ( SELECT /*+inline */ e.deptno, d.dname, SUM(e.sal) AS sal FROM emp e INNER JOIN dept d ON e.deptno = d.deptno GROUP BY e.deptno, d.dname ), avg_sal AS ( SELECT AVG(sal) AS avgsal FROM emp_sal ) -- main SELECT * FROM emp_sal CROSS JOIN avg_sal WHERE emp_sal.sal < avg_sal.avgsal ORDER BY emp_sal.dname; DEPTNO DNAME SAL AVGSAL ACCOUNTING SALES The Underestimated Subquery Factoring Clause

8 Execution Plan mit Inline Hint Id Operation Name Rows Bytes Cost SELECT STATEMENT SORT ORDER BY NESTED LOOPS avg_sal VIEW SORT AGGREGATE VIEW emp_sal HASH GROUP BY NESTED LOOPS TABLE ACCESS FULL EMP TABLE ACCESS BY INDEX ROWID DEPT * 10 INDEX UNIQUE SCAN PK_DEPT 1 0 * 11 VIEW SORT GROUP BY emp_sal NESTED LOOPS TABLE ACCESS FULL EMP TABLE ACCESS BY INDEX ROWID DEPT * 16 INDEX UNIQUE SCAN PK_DEPT Predicate Information (identified by operation id): access("e"."deptno"="d"."deptno") 11 - filter("emp_sal"."sal"<"avg_sal"."avgsal") 16 - access("e"."deptno"="d"."deptno") The Underestimated Subquery Factoring Clause

9 NF9i Beispiel Refactored WITH emp_sal AS ( SELECT e.deptno, d.dname, SUM(e.sal) AS sal, AVG(SUM(e.sal)) over() AS avgsal FROM emp e INNER JOIN dept d ON e.deptno = d.deptno GROUP BY e.deptno, d.dname ) -- main SELECT * FROM emp_sal WHERE sal < avgsal ORDER BY dname; DEPTNO DNAME SAL AVGSAL ACCOUNTING SALES The Underestimated Subquery Factoring Clause

10 NF9i Beispiel Refactored Execution Plan Id Operation Name Rows Bytes Cost SELECT STATEMENT * 1 VIEW WINDOW BUFFER SORT GROUP BY NESTED LOOPS TABLE ACCESS FULL EMP TABLE ACCESS BY INDEX ROWID DEPT * 7 INDEX UNIQUE SCAN PK_DEPT Predicate Information (identified by operation id): filter("sal"<"avgsal") 7 - access("e"."deptno"="d"."deptno") The Underestimated Subquery Factoring Clause

11 Temp Table Transformation erzwingen WITH emp_sal AS ( SELECT /*+ materialize */ e.deptno, d.dname, SUM(e.sal) AS sal, AVG(SUM(e.sal)) over() AS avgsal FROM emp e INNER JOIN dept d ON e.deptno = d.deptno GROUP BY e.deptno, d.dname ) -- main SELECT * FROM emp_sal WHERE sal < avgsal ORDER BY dname; DEPTNO DNAME SAL AVGSAL ACCOUNTING SALES The Underestimated Subquery Factoring Clause

12 Execution Plan mit Materialize Hint Id Operation Name Rows Bytes Cost SELECT STATEMENT TEMP TABLE TRANSFORMATION 2 LOAD AS SELECT 3 WINDOW BUFFER SORT GROUP BY NESTED LOOPS TABLE ACCESS FULL EMP TABLE ACCESS BY INDEX ROWID DEPT * 8 INDEX UNIQUE SCAN PK_DEPT SORT ORDER BY * 10 VIEW TABLE ACCESS FULL SYS_TEMP_ Predicate Information (identified by operation id): access("e"."deptno"="d"."deptno") 10 - filter("sal"<"avgsal") The Underestimated Subquery Factoring Clause

13 Materialize Hint auch in Inline View anwendbar? SELECT * FROM (SELECT /*+ materialize */ e.deptno, d.dname, SUM(e.sal) AS sal, AVG(SUM(e.sal)) over() AS avg_sal FROM emp e INNER JOIN dept d ON e.deptno = d.deptno GROUP BY e.deptno, d.dname) WHERE sal < avg_sal ORDER BY dname; Id Operation Name Rows Bytes Cost Nein! 0 SELECT STATEMENT * 1 VIEW WINDOW BUFFER SORT GROUP BY NESTED LOOPS TABLE ACCESS FULL EMP TABLE ACCESS BY INDEX ROWID DEPT * 7 INDEX UNIQUE SCAN PK_DEPT The Underestimated Subquery Factoring Clause

14 Einführung: Fazit Die Subqueries der Subquery Factoring Klausel sind mächtiger als Inline Views Das Mass unserer Dinge ist die Höhe Ihrer Ansprüche. Der CBO erhält mehr Informationen über eine Query und hat darum bessere Optimierungsmöglichkeiten Nur Subqueries der Subquery Factoring Klausel unterstützen die undokumentierten Hints materialize inline The Underestimated Subquery Factoring Clause

15 Agenda Einführung Sales History Tuning Fall Komplexe Abfragen Daten sind immer im Spiel. Tipps & Tricks Zusammenfassung The Underestimated Subquery Factoring Clause

16 Sales History Datenmodell und Beispiel COUNTRIES * CUSTOMERS TIMES 0..* SALES PRODUCTS * * 1 72 The Underestimated Subquery Factoring Clause

17 Ausgangslage SELECT co.country_region, t.fiscal_year, COUNT(*) AS number_of_sales, COUNT(DISTINCT p.prod_id) AS distinct_products, COUNT(DISTINCT c.cust_id) AS distinct_customers FROM sales s INNER JOIN customers c ON c.cust_id = s.cust_id INNER JOIN countries co ON co.country_id = c.country_id INNER JOIN products p ON p.prod_id = s.prod_id INNER JOIN times t ON t.time_id = s.time_id WHERE co.country_region IN ('Oceania', 'Asia') AND p.prod_category_desc = 'Photo' GROUP BY co.country_region, t.fiscal_year ORDER BY co.country_region, t.fiscal_year COUNTRY_REGION FISCAL_YEAR NUMBER_OF_SALES DISTINCT_PRODUCTS DISTINCT_CUSTOMERS Asia Asia Oceania Oceania Oceania Oceania The Underestimated Subquery Factoring Clause

18 Execution Plan Id Operation Name Rows Bytes TempSpc Cost (%CPU) SELECT STATEMENT (9) 1 SORT GROUP BY (9) * 2 HASH JOIN 130K 9337K 4257 (8) 3 TABLE ACCESS FULL TIMES (4) * 4 HASH JOIN 130K 7802K 4224 (8) * 5 TABLE ACCESS FULL COUNTRIES (0) * 6 HASH JOIN 382K 17M 1200K 4208 (8) 7 TABLE ACCESS FULL CUSTOMERS K 363 (3) * 8 HASH JOIN 382K 13M 2708 (11) * 9 TABLE ACCESS FULL PRODUCTS (0) 10 PARTITION RANGE ALL 2756K 44M 2616 (8) 11 TABLE ACCESS FULL SALES 2756K 44M 2616 (8) Predicate Information (identified by operation id): access("t"."time_id"="s"."time_id") 4 - access("co"."country_id"="c"."country_id") 5 - filter("co"."country_region"='asia' OR "CO"."COUNTRY_REGION"='Oceania') 6 - access("c"."cust_id"="s"."cust_id") 8 - access("p"."prod_id"="s"."prod_id") 9 - filter("p"."prod_category_desc"='photo') The Underestimated Subquery Factoring Clause

19 Analyse 1/2 Sales Intermediate Result Set 1 Intermediate Result Set 2 Products Intermediate Result Set 3 Customers 15% Execution Plan als Left-Deep Tree Result Set 30% Countries Times Problem schlechte Antwortzeit Ursache Execution Plan als Left-Deep Tree ist ineffizient Products, Sales, Customers, Countries werden zu spät gefiltert Join von irrelevanten Customers zu grosses Zwischenresultat Grösserer Bedarf an Memory und allenfalls Temp. Space Join benötigt mehr CPU Oracle kennt keine tabellenübergreifende Statistiken 30% Countries 30% Customers 15% Products15% Sales The Underestimated Subquery Factoring Clause

20 Analyse 2/2 Sales Intermediate Result Set 1 Products Intermediate Result Set 3 15% Execution Plan als Bushy Tree Result Set Customers Times Intermediate Result Set 2 30% Countries Lösungsansatz Join zwischen Customers und Countries früher ausführen Execution Plan als Bushy Tree Varianten um Join Reihenfolge anzupassen Strukturen erstellen, löschen Statistiken erstellen, fälschen Oracle Parameter ändern Stored Outlines erstellen, ändern SQL Profiles anwenden Hints anwenden Refactoring der Query (umformulieren) The Underestimated Subquery Factoring Clause

21 Hinting V1 SELECT /*+leading(co c) */ co.country_region, t.fiscal_year, COUNT(*) AS number_of_sales, COUNT(DISTINCT p.prod_id) AS distinct_products, COUNT(DISTINCT c.cust_id) AS distinct_customers FROM sales s INNER JOIN customers c ON c.cust_id = s.cust_id INNER JOIN countries co ON co.country_id = c.country_id INNER JOIN products p ON p.prod_id = s.prod_id INNER JOIN times t ON t.time_id = s.time_id WHERE co.country_region IN ('Oceania', 'Asia') AND p.prod_category_desc = 'Photo' GROUP BY co.country_region, t.fiscal_year ORDER BY co.country_region, t.fiscal_year COUNTRY_REGION FISCAL_YEAR NUMBER_OF_SALES DISTINCT_PRODUCTS DISTINCT_CUSTOMERS Asia Asia Oceania Oceania Oceania Oceania The Underestimated Subquery Factoring Clause

22 Hinting V1 Execution Plan Id Operation Name Rows Bytes Cost (%CPU) SELECT STATEMENT (12) 1 SORT GROUP BY (12) * 2 HASH JOIN 130K 9337K 3141 (11) 3 TABLE ACCESS FULL TIMES (4) * 4 HASH JOIN 130K 7802K 3108 (11) * 5 TABLE ACCESS FULL PRODUCTS (0) * 6 HASH JOIN 943K 35M 3074 (10) * 7 HASH JOIN K 369 (4) * 8 TABLE ACCESS FULL COUNTRIES (0) 9 TABLE ACCESS FULL CUSTOMERS K 363 (3) 10 PARTITION RANGE ALL 2756K 105M 2616 (8) 11 TABLE ACCESS FULL SALES 2756K 105M 2616 (8) Predicate Information (identified by operation id): access("t"."time_id"="s"."time_id") 4 - access("p"."prod_id"="s"."prod_id") 5 - filter("p"."prod_category_desc"='photo') 6 - access("c"."cust_id"="s"."cust_id") 7 - access("co"."country_id"="c"."country_id") 8 - filter("co"."country_region"='asia' OR "CO"."COUNTRY_REGION"='Oceania')!"# $%$ Gleicher Execution Plan mit pga_aggregate_target >= 12M statt leading Hint (Alternative Ausgangslage) The Underestimated Subquery Factoring Clause

23 Hinting V2 SELECT /*+leading(co c p s) */ co.country_region, t.fiscal_year, COUNT(*) AS number_of_sales, COUNT(DISTINCT p.prod_id) AS distinct_products, COUNT(DISTINCT c.cust_id) AS distinct_customers FROM sales s INNER JOIN customers c ON c.cust_id = s.cust_id INNER JOIN countries co ON co.country_id = c.country_id INNER JOIN products p ON p.prod_id = s.prod_id INNER JOIN times t ON t.time_id = s.time_id WHERE co.country_region IN ('Oceania', 'Asia') AND p.prod_category_desc = 'Photo' GROUP BY co.country_region, t.fiscal_year ORDER BY co.country_region, t.fiscal_year COUNTRY_REGION FISCAL_YEAR NUMBER_OF_SALES DISTINCT_PRODUCTS DISTINCT_CUSTOMERS Asia Asia Asia Asia Oceania Oceania Oceania Oceania The Underestimated Subquery Factoring Clause

24 Hinting V2 Execution Plan Id Operation Name Rows Cost (%CPU) SELECT STATEMENT (1) 1 TEMP TABLE TRANSFORMATION 2 LOAD AS SELECT SYS_TEMP_0FD9D * 3 HASH JOIN (4) * 4 TABLE ACCESS FULL COUNTRIES 6 3 (0) 5 TABLE ACCESS FULL CUSTOMERS (3) 6 SORT GROUP BY (1) * 7 HASH JOIN (1) 8 TABLE ACCESS FULL SYS_TEMP_0FD9D (8) * 9 HASH JOIN (1) 10 TABLE ACCESS FULL TIMES (4) * 11 HASH JOIN (1) * 12 TABLE ACCESS FULL PRODUCTS 10 3 (0) 13 PARTITION RANGE ALL 130K (1) 14 TABLE ACCESS BY LOCAL INDEX ROWID SALES 130K (1) 15 BITMAP CONVERSION TO ROWIDS 16 BITMAP AND &$" '( ) 17 BITMAP MERGE 18 BITMAP KEY ITERATION 19 BUFFER SORT * 20 TABLE ACCESS FULL PRODUCTS 10 3 (0) * 21 BITMAP INDEX RANGE SCAN SALES_PROD_BIX 22 BITMAP MERGE 23 BITMAP KEY ITERATION 24 BUFFER SORT 25 TABLE ACCESS FULL SYS_TEMP_0FD9D 1 2 (0) * 26 BITMAP INDEX RANGE SCAN SALES_CUST_BIX The Underestimated Subquery Factoring Clause

25 Hinting V3 SELECT /*+leading(co c p s) no_star_transformation */ co.country_region, t.fiscal_year, COUNT(*) AS number_of_sales, COUNT(DISTINCT p.prod_id) AS distinct_products, COUNT(DISTINCT c.cust_id) AS distinct_customers FROM sales s INNER JOIN customers c ON c.cust_id = s.cust_id INNER JOIN countries co ON co.country_id = c.country_id INNER JOIN products p ON p.prod_id = s.prod_id INNER JOIN times t ON t.time_id = s.time_id WHERE co.country_region IN ('Oceania', 'Asia') AND p.prod_category_desc = 'Photo' GROUP BY co.country_region, t.fiscal_year * ORDER BY co.country_region, t.fiscal_year COUNTRY_REGION FISCAL_YEAR NUMBER_OF_SALES DISTINCT_PRODUCTS DISTINCT_CUSTOMERS Asia Asia Asia Oceania Oceania Oceania The Underestimated Subquery Factoring Clause

26 Hinting V3 Execution Plan Id Operation Name Rows Bytes TempSpc Cost (%CPU) SELECT STATEMENT (3) 1 SORT GROUP BY (3) * 2 HASH JOIN 130K 9337K (3) 3 TABLE ACCESS FULL TIMES (4) * 4 HASH JOIN 130K 7802K 10M (3) 5 MERGE JOIN CARTESIAN 189K 8158K (2) * 6 HASH JOIN K 369 (4) * 7 TABLE ACCESS FULL COUNTRIES (0) 8 TABLE ACCESS FULL CUSTOMERS K 363 (3) $ (1 9 BUFFER SORT (2) * 10 TABLE ACCESS FULL PRODUCTS (0) 11 PARTITION RANGE ALL 2756K 44M 2616 (8) 12 TABLE ACCESS FULL SALES 2756K 44M 2616 (8) Predicate Information (identified by operation id): access("t"."time_id"="s"."time_id") 4 - access("p"."prod_id"="s"."prod_id" AND "C"."CUST_ID"="S"."CUST_ID") 6 - access("co"."country_id"="c"."country_id") 7 - filter("co"."country_region"='asia' OR "CO"."COUNTRY_REGION"='Oceania') 10 - filter("p"."prod_category_desc"='photo') + #$,-. /%! 0$ The Underestimated Subquery Factoring Clause

27 Refactoring & Hinting WITH cc AS ( SELECT /*+no_merge cardinality(3000) */ c.cust_id, co.country_region FROM countries co INNER JOIN customers c ON c.country_id = co.country_id WHERE co.country_region IN ('Oceania', 'Asia') ) SELECT /*+index(s) */ cc.country_region, t.fiscal_year, COUNT(*) AS number_of_sales, COUNT(DISTINCT p.prod_id) AS distinct_products, COUNT(DISTINCT cc.cust_id) AS distinct_customers FROM sales s INNER JOIN cc ON cc.cust_id = s.cust_id INNER JOIN products p ON p.prod_id = s.prod_id INNER JOIN times t ON t.time_id = s.time_id WHERE p.prod_category_desc = 'Photo' GROUP BY cc.country_region, t.fiscal_year ORDER BY cc.country_region, t.fiscal_year * COUNTRY_REGION FISCAL_YEAR NUMBER_OF_SALES DISTINCT_PRODUCTS DISTINCT_CUSTOMERS Asia Oceania The Underestimated Subquery Factoring Clause

28 Refactoring & Hinting Execution Plan Id Operation Name Rows Cost (%CPU) SELECT STATEMENT (1) 1 SORT GROUP BY (1) * 2 HASH JOIN 162K (1) 3 TABLE ACCESS FULL TIMES (4) * 4 HASH JOIN 162K (1) 5 VIEW (4) * 6 HASH JOIN (4) * 7 TABLE ACCESS FULL COUNTRIES 6 3 (0) 8 TABLE ACCESS FULL CUSTOMERS (3) 9 TABLE ACCESS BY LOCAL INDEX ROWID SALES (1) 10 NESTED LOOPS 382K (1) * 11 TABLE ACCESS FULL PRODUCTS 10 3 (0) 12 PARTITION RANGE ALL 13 BITMAP CONVERSION TO ROWIDS * 14 BITMAP INDEX SINGLE VALUE SALES_PROD_BIX Predicate Information (identified by operation id): access("t"."time_id"="s"."time_id") 4 - access("cc"."cust_id"="s"."cust_id") 6 - access("c"."country_id"="co"."country_id") 7 - filter("co"."country_region"='asia' OR "CO"."COUNTRY_REGION"='Oceania') 11 - filter("p"."prod_category_desc"='photo') 14 - access("p"."prod_id"="s"."prod_id") +$%234$$" ( 56" (3 7 (5 8(+8 9: " ( - The Underestimated Subquery Factoring Clause

29 Übersicht der Resultate Fall Hints Laufzeit in Sek. Bemerkungen Ausgangslage - ~ 5.5 Countries Join erfolgt zu spät Hinting V1 leading(co c) ~ 4.1 Products Join erfolgt zu spät Hinting V2 leading(co c p s) ~ 1.0 Hint forciert Star Transformation Hinting V3 leading(co c p s) no_star_transformation ~ 3.8 Hint forciert Cartesian Join Refactoring & Hinting no_merge cardinality(3000) Index(s) ~ 0.8 Gewünschter Execution Plan The Underestimated Subquery Factoring Clause

30 Sales History Tuning Fall: Fazit Verwende die Subquery Factoring Clause in Kombination mit Hints um einen Execution Plan als Bushy Tree zu forcieren Das Mass unserer Dinge ist die Höhe Ihrer Ansprüche. Hints sind in einer Subquery Factory Clause gezielt und dosiert einsetzbar z.b. no_merge Hint um einen Join in einer Subquery Factoring Clause zu erzwingen, aber dem CBO die Wahl zu lassen wann und wie oft dieser Join auszuführen ist The Underestimated Subquery Factoring Clause

31 Agenda Einführung Sales History Tuning Fall Komplexe Abfragen Daten sind immer im Spiel. Tipps & Tricks Zusammenfassung The Underestimated Subquery Factoring Clause

32 McGyver Taschenlampe The Underestimated Subquery Factoring Clause

33 Die Anforderungen Alle Berechtigungen eines Benutzers anzeigen Direkte System Privilegien Direct Grant Identifikator System Privilegien aufgrund Privileg direkt an Benutzer vergeben rekursiv aufgelöster Rollen Blatt Identifikator Berechtigte Rollen/Privilegien Rollen ohne Sub-Rollen System Privilegien USERNAME PRIV GRANTED_PRIV DIRECT_GRANT IS_LEAF OLAPSYS SELECT ANY TABLE OLAP_DBA N Y OLAPSYS SELECT ANY TABLE SELECT ANY TABLE Y Y SCOTT SELECT ANY TABLE DBA N Y SYS SELECT ANY TABLE DBA N Y SYS SELECT ANY TABLE EXP_FULL_DATABASE N Y SYS SELECT ANY TABLE IMP_FULL_DATABASE N Y SYS SELECT ANY TABLE OLAP_DBA N Y SYS SELECT ANY TABLE SELECT ANY TABLE Y Y SYSMAN SELECT ANY TABLE DBA N Y SYSTEM SELECT ANY TABLE DBA N Y SYSTEM SELECT ANY TABLE SELECT ANY TABLE Y Y The Underestimated Subquery Factoring Clause

34 Query Teil 1 von 4 WITH -- roles-privileges as recursive structure priv AS ( -- roles without parent (=roots) SELECT ROLE AS priv, NULL AS parent_priv FROM dba_roles WHERE ROLE NOT IN (SELECT granted_role FROM role_role_privs) UNION ALL -- roles granted to roles SELECT granted_role AS priv, ROLE AS parent_priv FROM role_role_privs UNION ALL -- system privileges granted to roles SELECT PRIVILEGE AS priv, grantee AS parent_priv FROM dba_sys_privs WHERE grantee IN (SELECT ROLE FROM dba_roles) ) The Underestimated Subquery Factoring Clause

35 Query Teil 2 von 4 -- complete hierarchy as tree view, tree AS ( SELECT priv, parent_priv, sys_connect_by_path(priv, '/') '/' AS priv_path, CASE WHEN connect_by_isleaf = '0' THEN 'N' ELSE 'Y' END AS is_leaf -- 10g Style FROM priv CONNECT BY PRIOR priv = parent_priv ) -- complete hierarchy as graph view, graph AS ( SELECT priv, substr(priv_path, 2, instr(priv_path, '/', 2) - 2) AS parent_priv, is_leaf FROM tree ) The Underestimated Subquery Factoring Clause

36 Query Part 3 von 4 -- user privileges (user system privileges and user roles), upriv AS ( -- system privileges granted to users SELECT u.username, p.privilege AS priv FROM dba_sys_privs p INNER JOIN dba_users u ON u.username = p.grantee UNION ALL -- roles granted to users SELECT u.username, p.granted_role AS priv FROM dba_role_privs p INNER JOIN dba_users u ON u.username = p.grantee ) The Underestimated Subquery Factoring Clause

37 Query Teil 4 von 4 -- user privileges as graph view, ugraph AS ( SELECT DISTINCT upriv.username, graph.priv, CAST(graph.parent_priv AS VARCHAR2(30)) AS granted_priv, CASE WHEN graph.priv = graph.parent_priv THEN 'Y' ELSE 'N' END AS direct_grant, graph.is_leaf FROM upriv INNER JOIN graph ON upriv.priv = graph.parent_priv ) -- main SELECT username, priv, granted_priv, direct_grant, is_leaf FROM ugraph WHERE priv = 'SELECT ANY TABLE' ORDER BY username, PRIV, granted_priv; The Underestimated Subquery Factoring Clause

38 Inline Views versus Subquery Factoring Clause SELECT username, priv, granted_priv, direct_grant, is_leaf FROM (SELECT FROM (SELECT ) upriv, (SELECT FROM (SELECT FROM (SELECT ) priv ) tree ) graph ) ugraph WHERE priv = 'SELECT ANY TABLE' ORDER BY username, PRIV, granted_priv; WITH priv AS (SELECT ), tree AS (SELECT FROM priv ), graph AS (SELECT FROM tree ), upriv AS (SELECT ), ugraph AS (SELECT FROM upriv, graph ) SELECT username, priv, granted_priv, direct_grant, is_leaf FROM ugraph WHERE priv = 'SELECT ANY TABLE' ORDER BY username, PRIV, granted_priv; The Underestimated Subquery Factoring Clause

39 Komplexe Abfragen: Fazit Komplexe Queries als Folge von einfachen Subqueries schreiben Ähnliches Konzept wie Pipes Das Mass unserer Dinge ist die Höhe Ihrer Ansprüche. Die Subquery Factoring Clause ist immer durch mehrere, geschachtelte Inline Views ersetzbar, aber die Konsequenzen sind: Sich wiederholende Subqueries Schlechtere Lesbarkeit und Wartbarkeit The Underestimated Subquery Factoring Clause

40 Agenda Einführung Sales History Tuning Fall Komplexe Abfragen Daten sind immer im Spiel. Tipps & Tricks Zusammenfassung The Underestimated Subquery Factoring Clause

41 Tipps & Tricks (1) Falls das eingesetzte Werkzeug die Subquery Factoring Clause nicht unterstützt: SELECT * FROM ( WITH query_name AS (subquery) [, query_name AS (subquery) ] SELECT... ) Dieser Inline View Workaround hilft auch Fehlermeldungen der Formatierungs-Werkzeuge zu vermeiden Toad unterstützt WITH Klausel SQL Navigator unterstützt WITH Klausel SQL Developer unterstützt WITH Klausel PL/SQL Developer unterstützt WITH Klausel in PL/SQL benötigt Workaround für SQL Die Limitierung auf eine WITH Klausel per SQL Statement kann in einigen Fällen mit Hilfe des Inline View Workarounds umgangen werden. Jede WITH Klausel definiert aber ihren eigenen Namensraum! The Underestimated Subquery Factoring Clause

42 Tipps & Tricks (2) Bug verhindert allenfalls die Nutzung der Subquery Factoring Clause in Views, weil die in Subqueries verwendeten Objekte ebenfalls berechtigt werden müssen (gelöst in 10.2) Falls predicate pushing in geschachtelten Strukturen nicht funktioniert: Context Variablen Bind Variablen Dynamisches SQL Table Function Um das Debugging eines Query Subsets zu vereinfachen: Subqueries aufgrund ihrer Zusammengehörigkeit ordnen -- für Kommentare verwenden --+ für Hints verwenden /* */ Syntax reservieren, um ganze Query Blöcke auszukommentieren The Underestimated Subquery Factoring Clause

43 Zusammenfassung Die Subquery Factoring Clause ist eine gute Alternative für jede Inline View, um die Lesbarkeit und Wartbarkeit zu erhöhen Das Mass unserer Dinge ist die Höhe Ihrer Ansprüche. Die Subquery Factoring Clause unterstützt den CBO gezielt bei seiner Arbeit; typische Hints in Subqueries sind no_merge, merge materialize, inline oder dynamic_sampling cardinality opt_estimate table_stats, column_stats, index_stats Die Subquery Factoring Clause erhöht die Kontrolle der Query Verarbeitung The Underestimated Subquery Factoring Clause

44 Vielen Dank!? Basel Baden Bern Lausanne Zürich Düsseldorf Frankfurt/M. Freiburg i. Br. Hamburg München Stuttgart Wien

Art der Info: Technische Background Info Teil 2 (April 2002)

Art der Info: Technische Background Info Teil 2 (April 2002) Betrifft: Autor: Oracle 9i New Features SQL und PL/SQL Christine Hansen (christine.hansen@trivadis.com) Art der Info: Technische Background Info Teil 2 (April 2002) Quelle: Aus dem NF9i-Kurs und NF9i-Techno-Circle

Mehr

Optimale Performance durch Constraints im Data Warehouse

Optimale Performance durch Constraints im Data Warehouse Optimale Performance durch Constraints im Data Warehouse DOAG Konferenz, 17. November 2016 Dani Schnider, Trivadis AG @dani_schnider BASEL BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENF HAMBURG

Mehr

Art der Info: Technische Background Info Teil 3 (April 2002)

Art der Info: Technische Background Info Teil 3 (April 2002) Betrifft: Autor: Oracle9i New Features SQL und PL/SQL Patrick Malcherek (patrick.malcherek@trivadis.com) Art der Info: Technische Background Info Teil (April 00) Quelle: Aus dem NF9i-Kurs und NF9i-Techno-Circle

Mehr

WITH or WITHout you - Komfort-SQL in Oracle 12c Dr.-Ing. Holger Friedrich sumit AG

WITH or WITHout you - Komfort-SQL in Oracle 12c Dr.-Ing. Holger Friedrich sumit AG WITH or WITHout you - Komfort-SQL in Oracle 12c Dr.-Ing. Holger Friedrich sumit AG Schlüsselworte Subquery Factoring, WITH-Clause, Entwicklung, Performance, Optimiser Einleitung Oracle SQL enthält diverse

Mehr

IT-Symposium 2008 05.06.2008

IT-Symposium 2008 05.06.2008 Selftuning Database Ein Traum oder Wirklichkeit Ralf Durben Oracle Deutschland GmbH www.hp-user-society.de 1 Die Arbeitswelt des Gestern, heute und morgen Früher Ein für wenige Datenbanken

Mehr

Speed up your Query Strategien zur Optimierung von SQL-Queries. Juni 2012 Ulrike Brenner

Speed up your Query Strategien zur Optimierung von SQL-Queries. Juni 2012 Ulrike Brenner Speed up your Query Strategien zur Optimierung von SQL-Queries Juni 2012 Ulrike Brenner Ulrike Brenner Seit 1999 Oracle Entwicklerin Oracle DB 8-11gR2 SQL PL/SQL Oracle Forms/Reports APEX Entwicklerin

Mehr

Generieren Sie die Befehle zum Sammeln von Statistiken auf diesen Objekten

Generieren Sie die Befehle zum Sammeln von Statistiken auf diesen Objekten Aufgabe 1_4_1: Überprüfen Sie die Schemata DOAG auf Objekte mit Stale Statistics Generieren Sie die Befehle zum Sammeln von Statistiken auf diesen Objekten delete from doag.order_line where order_line_id>8000000;

Mehr

Oracle Virtual Private Database

Oracle Virtual Private Database Oracle Virtual Private Database Rolf Wesp Consultant Application Development Rolf.Wesp@trivadis.com Düsseldorf, September 2008 Basel Baden Bern Lausanne Zürich Düsseldorf Frankfurt/M. Freiburg i. Br. Hamburg

Mehr

Critical Patch Update und Ihre Applikation funktioniert noch?

Critical Patch Update und Ihre Applikation funktioniert noch? Critical Patch Update und Ihre Applikation funktioniert noch? Sven Vetter Principal Consultant / Partner sven.vetter@trivadis.com DOAG Stuttgart, 19.07.2007 Basel Baden Bern Lausanne Zürich Düsseldorf

Mehr

SQL Optimizer und SQL Performance

SQL Optimizer und SQL Performance SQL Optimizer und SQL Performance Schlüsselworte SQL, Optimizer, Explain Plan, SQL Trace Marco Mischke Robotron Datenbank Software GmbH Dresden Einleitung Dieser Vortrag beschäftigt sich mit grundlegenden

Mehr

Oracle 9i Einführung Performance Tuning

Oracle 9i Einführung Performance Tuning Kurs Oracle 9i Einführung Performance Tuning Teil 3 Der Optimizer Timo Meyer Wintersemester 2005 / 2006 Seite 1 von 16 Seite 1 von 16 1. auf Tabellen 2. 3. Optimizer 4. Optimizer RBO 5. Optimizer CBO 6.

Mehr

Urs Meier (urs.meier@trivadis.com) Art der Info Technical Info (Februar 2002) Aus unserer Projekterfahrung und Forschung

Urs Meier (urs.meier@trivadis.com) Art der Info Technical Info (Februar 2002) Aus unserer Projekterfahrung und Forschung Betrifft Optimizer Autor Urs Meier (urs.meier@trivadis.com) Art der Info Technical Info (Februar 2002) Quelle Aus unserer Projekterfahrung und Forschung Einführung Mit jedem Oracle Release nimmt die Anzahl

Mehr

StarView: mit statischem SQL dynamische Abfragen auf StarSchema

StarView: mit statischem SQL dynamische Abfragen auf StarSchema StarView: mit statischem SQL dynamische Abfragen auf StarSchema DOAG Konferenz 2013 Nürnberg, 19.-21. November 2013 Slavomir Nagy metafinanz Informationssysteme GmbH Wir fokussieren mit unseren Services

Mehr

Analytische Funktionen erfolgreich eingesetzt

Analytische Funktionen erfolgreich eingesetzt Analytische Funktionen erfolgreich eingesetzt Dani Schnider Trivadis AG Glattbrugg, Schweiz Schlüsselworte: Analytische Funktionen, SQL, Performance Optimierung, Data Warehousing Zusammenfassung Analytische

Mehr

Manuelles Oracle SQL Tuning

Manuelles Oracle SQL Tuning Manuelles Oracle SQL Tuning Eine Einführung DOAG Konferenz 2012 Wer bin ich? Freiberuflicher Consultant in D/A/CH Oracle Certified Master 10g & 11g 8 Jahre Oracle-Erfahrung Seit 4 Jahren unabhängiger Oracle

Mehr

Performance-Prognosen im Test, trotz Datenschutzauflagen. Daniel Stein. DOAG November 2016

Performance-Prognosen im Test, trotz Datenschutzauflagen. Daniel Stein. DOAG November 2016 Performance-Prognosen im Test, trotz Datenschutzauflagen Daniel Stein DOAG November 2016 Agenda Vorstellung Motivation Situation heute Praxisbeispiele Fazit & Ausblick 2 Vorstellung Daniel Stein» 31 Jahre»

Mehr

Nützliche Oracle 12c Features für Data Warehousing DOAG BI, 8. Juni 2016 Dani Schnider, Trivadis AG

Nützliche Oracle 12c Features für Data Warehousing DOAG BI, 8. Juni 2016 Dani Schnider, Trivadis AG Nützliche Oracle 12c Features für Data Warehousing DOAG BI, 8. Juni 2016 Dani Schnider, Trivadis AG BASEL BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENEVA HAMBURG COPENHAGEN LAUSANNE MUNICH STUTTGART

Mehr

Optimiertes Laden in die F-Fakten-Tabelle des SAP BW

Optimiertes Laden in die F-Fakten-Tabelle des SAP BW Optimiertes Laden in die F-Fakten-Tabelle des SAP BW Schlüsselworte SAP BW Index unusable. Einleitung Jörn Bartels Oracle München Mit Oracle Database 11g Release 2 kann das Laden der F-Fakten Tabelle in

Mehr

Oracle Old Features. Vortrag für die DOAG-Konferenz Uwe M. Küchler, Valentia GmbH

Oracle Old Features. Vortrag für die DOAG-Konferenz Uwe M. Küchler, Valentia GmbH Oracle Old Features Vortrag für die DOAG-Konferenz 2011 17.11.2011 Uwe M. Küchler, Valentia GmbH Zur Person Generation C=64 Seit über 25 Jahren in der IT tätig 1997-2000 bei Oracle Seither durchgehend

Mehr

Laden von Data Marts auch mal komplex DOAG BI, 9. Juni 2016 Dani Schnider, Trivadis AG

Laden von Data Marts auch mal komplex DOAG BI, 9. Juni 2016 Dani Schnider, Trivadis AG Laden von Data Marts auch mal komplex DOAG BI, 9. Juni 2016 Dani Schnider, Trivadis AG BASEL BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENEVA HAMBURG COPENHAGEN LAUSANNE MUNICH STUTTGART VIENNA

Mehr

Inhalt. Behandlung von Views durch den CBO View Merging Predicate Pushing Complex View Merging Hints in Views Globale Hints. Dr.

Inhalt. Behandlung von Views durch den CBO View Merging Predicate Pushing Complex View Merging Hints in Views Globale Hints. Dr. Inhalt Behandlung von Views durch den CBO View Merging Predicate Pushing Complex View Merging Hints in Views Globale Hints Dr.Frank Haney 1 Behandlung von Views durch den CBO View Merging bedeutet, daß

Mehr

Oracle 8i und 9i New Features. DOAG November Peter Jensch, Trivadis GmbH

Oracle 8i und 9i New Features. DOAG November Peter Jensch, Trivadis GmbH Oracle 8i und 9i New Features DOAG November 200 Peter Jensch, Trivadis GmbH Facts & Figures Über 300 Mitarbeiter (D und CH) Über 200 Oracle Consultant Über 300 Kunden (ohne Schulung) Über 000 Projekte

Mehr

Optimale Performance durch Constraints im Data Warehouse

Optimale Performance durch Constraints im Data Warehouse Optimale Performance durch Constraints im Data Warehouse Dani Schnider Trivadis AG Zürich/Glattbrugg, Schweiz Einleitung Die Frage, ob und in welchem Umfang Datenbankconstraints in einem Data Warehouse

Mehr

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert.

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert. Betrifft Autor FIRST, LAST Markus Jägle (markus.jaegle@trivadis.com) Art der Info Technische Background Info (April 2002) Quelle Aus dem NF9i-Kurs, NF9i-Techno-Circle der Trivadis und Oracle9i Data Warehousing

Mehr

Username and password privileges. Rechteverwaltung. Controlling User Access. Arten von Rechten Vergabe und Entzug von Rechten DBS1 2004

Username and password privileges. Rechteverwaltung. Controlling User Access. Arten von Rechten Vergabe und Entzug von Rechten DBS1 2004 Arten von Rechten Vergabe und Entzug von Rechten Seite 1 Controlling User Access Database administrator Username and password privileges Users Seite 2 Privileges Database security System security Data

Mehr

Nutzung der Oracle Database InMemory Option für SAP BW

Nutzung der Oracle Database InMemory Option für SAP BW Nutzung der Oracle Database InMemory Option für SAP BW Schlüsselworte Oracle, SAP-BW, InMemory, Star-Schema. Jörn Bartels Oracle München Einleitung In SAP BW wurde bisher ein erweitertes Snow Flake Schema

Mehr

Explain verstehen. Hans-Jürgen Schönig.

Explain verstehen. Hans-Jürgen Schönig. Explain verstehen Zielsetzung EXPLAIN... Was versucht uns PostgreSQL zu sagen? Wie kann diese Information genutzt werden? Wie erkenne ich Probleme? Abfragen in PostgreSQL Mehrstufige Ausführung Parser:

Mehr

select DISTINCT Name, ort From Verkauf; selektiert Name und Ort von Tabelle Verkauf - DISTINCT steht dass keine Zeile mehrfach vorkommt

select DISTINCT Name, ort From Verkauf; selektiert Name und Ort von Tabelle Verkauf - DISTINCT steht dass keine Zeile mehrfach vorkommt Some SQL Queries % you can use them with the project Buch/Verlag select Name, ort From Verkauf; selektiert Name und Ort von Tabelle Verkauf select DISTINCT Name, ort From Verkauf; selektiert Name und Ort

Mehr

Fortgeschrittene SQL-Techniken für APEX-Formulare und Reports

Fortgeschrittene SQL-Techniken für APEX-Formulare und Reports Fortgeschrittene SQL-Techniken für APEX-Formulare und Reports Andreas Wismann WHEN OTHERS Beratung Projektmanagement Coaching rund um Oracle Application Express rund um Application Express Beratung Projektmanagement

Mehr

Oracle Analytic Functions

Oracle Analytic Functions Mittwoch, 13.02.2008, 17:00 Uhr Regionaltreffen München/Südbayern Oracle Analytic Functions Seit Jahren auf dem Markt (8.1.6), jedoch unbekannt und selten im Einsatz S e i t e 1 Agenda Einsatzmöglichkeiten

Mehr

Oracle Database 12c Was Sie immer schon über Indexe wissen wollten

Oracle Database 12c Was Sie immer schon über Indexe wissen wollten Oracle Database 12c Was Sie immer schon über Indexe wissen wollten Marco Mischke, 08.09.2015 DOAG Regionaltreffen B* Indexe - Aufbau 0-Level Index A-F G-Z 1-Level Index A-F G-Z 2-Level Index A-F G-M N-Z

Mehr

Oracle 10g Einführung

Oracle 10g Einführung Kurs Oracle 10g Einführung Teil 5 Einführung Timo Meyer Administration von Oracle-Datenbanken Timo Meyer Sommersemester 2006 Seite 1 von 16 Seite 1 von 16 Agenda 1 Tabellen und Views erstellen 2 Indizes

Mehr

Erzeugung und Veränderung von Tabellen

Erzeugung und Veränderung von Tabellen Datenbanken - Objekte Erzeugung und Veränderung von Tabellen Objekt Tabelle View Sequence Index Synonym Basiseinheit zum Speichern; besteht aus Zeilen und Spalten; Logische Repräsentation; kann Teilmengen

Mehr

SQL Developer Unit Tests

SQL Developer Unit Tests Perry Pakull Principal Consultant Trivadis AG BASEL BERN BRUGG LAUSANNE ZÜRICH DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. HAMBURG MÜNCHEN STUTTGART WIEN 1 @PerryPakull Principal Consultant Trivadis AG in

Mehr

Art der Info: Technische Background Info Teil 1 (April 2002)

Art der Info: Technische Background Info Teil 1 (April 2002) Betrifft: Autor: Oracle 9i New Features SQL und PL/SQL Christine Hansen (christine.hansen@trivadis.com) Art der Info: Technische Background Info Teil 1 (April 2002) Quelle: Aus dem NF9i-Kurs und NF9i-Techno-Circle

Mehr

Data Warehouse schnell gemacht Performanceaspekte im Oracle DWH

Data Warehouse schnell gemacht Performanceaspekte im Oracle DWH Data Warehouse schnell gemacht Performanceaspekte im Oracle DWH Dani Schnider Principal Consultant Business Intelligence BI Trilogie, Zürich/Basel 25./26. November 2009 Basel Baden Bern Lausanne Zürich

Mehr

Enrico Genauck 37327 IN04

Enrico Genauck 37327 IN04 ANFRAGEOPTIMIERUNG IN ORACLE Enrico Genauck 37327 IN04 An!ageoptimierung in Oracle 1 ANFRAGEOPTIMIERUNG IN ORACLE Enrico Genauck 37323 IN04 Einleitung Die Optimierung einer Anfrage an eine relationale

Mehr

SQL Intensivpraktikum SS 2008

SQL Intensivpraktikum SS 2008 SQL Intensivpraktikum SS 2008 Aggregation von Daten Arbeit mit Gruppen SQL1 basierend auf OAI-Kurs Copyright Oracle Corporation, 1998. All rights reserved. Gruppenfunktionen Gruppenfunktionen verarbeiten

Mehr

Oracle 10g Einführung

Oracle 10g Einführung Kurs Oracle 10g Einführung Teil 6 Vertiefung Relationale Algebra Anzeigen von Daten aus mehreren Tabellen Timo Meyer Administration von Oracle-Datenbanken Timo Meyer Sommersemester 2006 Seite 1 von 22

Mehr

Listener: Bei Oracle erfolgt die Steuerung (konventionell) via listener.ora (Listener Konfiguration), tnsnames.ora (Client Konfiguration)

Listener: Bei Oracle erfolgt die Steuerung (konventionell) via listener.ora (Listener Konfiguration), tnsnames.ora (Client Konfiguration) Protokoll 1: Listener: Bei Oracle erfolgt die Steuerung (konventionell) via listener.ora (Listener Konfiguration), tnsnames.ora (Client Konfiguration) Abschnitt 2.1 (Ausführungen zum Shutdown / Startup)

Mehr

Die Datenmanipulationssprache SQL

Die Datenmanipulationssprache SQL Die Datenmanipulationssprache SQL Daten eingeben Daten ändern Datenbank-Inhalte aus Dateien laden Seite 1 Data Manipulation Language A DML statement is executed when you Add new rows to a table Modify

Mehr

Oracle9i Designer. Rainer Willems. Page 1. Leitender Systemberater Server Technology Competence Center Frankfurt Oracle Deutschland GmbH

Oracle9i Designer. Rainer Willems. Page 1. Leitender Systemberater Server Technology Competence Center Frankfurt Oracle Deutschland GmbH Oracle9i Designer Rainer Willems Leitender Systemberater Server Technology Competence Center Frankfurt Oracle Deutschland GmbH Page 1 1 Agenda 9i Designer & 9i SCM in 9i DS Design Server Generierung &

Mehr

Index- und Zugriffsstrukturen für. Holger Brämer, 05IND-P

Index- und Zugriffsstrukturen für. Holger Brämer, 05IND-P Index- und Zugriffsstrukturen für Data Warehousing Holger Brämer, 05IND-P Index- und Zugriffstrukturen für Data Warehousing Materialisierte Sichten Bitmap-Indexe Verbundindexe Materialisierte Sichten gehören

Mehr

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion Überblick über Stored Functions Funktionen Eine Funktion ist ein benannter PL/SQL- Block, der einen Wert zurückgibt. Eine Funktion kann in der Datenbank als Objekt zur wiederholbaren Ausführung gespeichert

Mehr

Carsten Czarski Oracle Deutschland B.V. & Co KG. Keine Angst vor SQL Injection oder Wie man Datenbankzugriffe sicher implementiert

Carsten Czarski Oracle Deutschland B.V. & Co KG. Keine Angst vor SQL Injection oder Wie man Datenbankzugriffe sicher implementiert Carsten Czarski Oracle Deutschland B.V. & Co KG Keine Angst vor SQL Injection oder Wie man Datenbankzugriffe sicher implementiert Keine Angst vor SQL Injection oder "Wie man Datenbankzugriffe

Mehr

Der Ausführungsplan das unbekannte Wesen

Der Ausführungsplan das unbekannte Wesen Der Ausführungsplan das unbekannte Wesen Martin Hoermann ORDIX AG Paderborn Wiesbaden Münster Köln Neu-Ulm Zusammenfassung Die Antwortzeit eines SQL Befehls bei gegebenem Datenbestand und Datenbankstrukturen

Mehr

Views erzeugen. Datenbank - Objekte. Wozu braucht man Views? Was ist eine View?

Views erzeugen. Datenbank - Objekte. Wozu braucht man Views? Was ist eine View? Datenbank - Objekte Views erzeugen Objekt Tabelle View Sequence Index Synonym Objekt Beschreibung Basiseinheit zum Speichern; besteht aus Zeilen und Spalten; Logische Repräsentation; kann Teilmengen von

Mehr

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de 08 Datenbanken Übung SQL Einführung Eckbert Jankowski www.iit.tu-cottbus.de Datenmodell (Wiederholung, Zusammenfassung) Objekte und deren Eigenschaften definieren Beziehungen zwischen den Objekten erkennen/definieren

Mehr

Prakt. Datenbankprogrammierung. Sommersemester 2005

Prakt. Datenbankprogrammierung. Sommersemester 2005 Prakt. Datenbankprogrammierung Sommersemester 2005 A,2: Hierarchische Anfragen Martin-Luther-Universität Halle, Institut für Informatik, Datenbanken Christian Goldberg Wann ist eine hierarchische Anfrage

Mehr

Oracle 12c: Neuerungen in PL/SQL. Roman Pyro DOAG 2014 Konferenz

Oracle 12c: Neuerungen in PL/SQL. Roman Pyro DOAG 2014 Konferenz Oracle 12c: Neuerungen in PL/SQL Roman Pyro DOAG 2014 Konferenz Herrmann & Lenz Services GmbH Herrmann & Lenz Solutions GmbH Erfolgreich seit 1996 am Markt Firmensitz: Burscheid (bei Leverkusen) Beratung,

Mehr

Oracle Old Features. Uwe Küchler Valentia GmbH Frankfurt am Main

Oracle Old Features. Uwe Küchler Valentia GmbH Frankfurt am Main Oracle Old Features Uwe Küchler Valentia GmbH Frankfurt am Main Schlüsselwörter: Datenbank, Performance, Constraints, ANSI SQL, PL/SQL. Einleitung Bereits im vorigen Jahrtausend hat Oracle Features in

Mehr

ANFRAGEOPTIMIERUNG IN POSTGRESQL

ANFRAGEOPTIMIERUNG IN POSTGRESQL ANFRAGEOPTIMIERUNG IN POSTGRESQL Friedrich-Schiller-Universität Jena Mai 2013 REFERENTIN Diplom-Informatikerin Open Source Aktivität seit 1996 Expertin für Datenbanken sowie Lokalisierung / Globalisierung

Mehr

MySQL Performance Tuning für Entwickler

MySQL Performance Tuning für Entwickler MySQL Performance Tuning für Entwickler Cebit 2015, Hannover Oli Sennhauser Senior MySQL Consultant, FromDual GmbH oli.sennhauser@fromdual.com 1 / 18 FromDual GmbH Support Beratung remote-dba Schulung

Mehr

Automatisierte Datenmigration mit dynamischen SQL

Automatisierte Datenmigration mit dynamischen SQL Automatisierte Datenmigration mit dynamischen SQL Rolf Wesp Consultant Rolf.Wesp@trivadis.com Düsseldorf, 27. Oktober 2009 Baden Basel Bern Brugg Lausanne Zürich Düsseldorf Frankfurt/M. Freiburg i. Br.

Mehr

Gliederung. 1) Speicherplatz-Zuordnung und -Verwaltung 2) Indizes 3) Explain Plan 4) Join-Operationen 5) Der Optimizer 6) Parallelisieren

Gliederung. 1) Speicherplatz-Zuordnung und -Verwaltung 2) Indizes 3) Explain Plan 4) Join-Operationen 5) Der Optimizer 6) Parallelisieren Gliederung ) Speicherplatz-Zuordnung und -Verwaltung 2) Indizes 3) Explain Plan 4) Join-Operationen 5) Der Optimizer 6) Parallelisieren ) Speicherplatz-Zuordnung und -Verwaltung.) Tabellenspeicherung:

Mehr

Erhöhung der Manageability durch SQL-Profile

Erhöhung der Manageability durch SQL-Profile Erhöhung der Manageability durch SQL-Profile Ein Erfahrungsbericht 20.11.2007 Dr. Frank Haney 1 Inhalt 1. Problemstellung 2. Der SQL-Tuning-Advisor (STA) 3. Anlegen und Implementieren von SQL-Profilen

Mehr

Indexing und Performance Tuning

Indexing und Performance Tuning Indexing und Performance Tuning Cybertec Schönig & Schönig GmbH Hans-Jürgen Schönig PostgreSQL Indexing - Jeder hat schon einmal ein Telefonbuch Benutzt - Jeder hat schon einmal Suchen durchgeführt CREATE

Mehr

10 Gründe warum Ihr Index nicht verwendet wird

10 Gründe warum Ihr Index nicht verwendet wird 10 Gründe warum Ihr Index nicht verwendet wird Schlüsselworte Index Benutzung, Index Tuning Einleitung Marco Patzwahl MuniQSoft GmbH München-Unterhaching Ein Index auf einer Tabelle sollte ja eigentlich

Mehr

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language)

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language) Einführung in SQL 1. Grundlagen Structured Query Language Viele Dialekte Unterteilung: i. DDL (Data Definition Language) ii. iii. DML (Data Modifing Language) DRL (Data Retrival Language) 1/12 2. DDL Data

Mehr

Abfragen (Queries, Subqueries)

Abfragen (Queries, Subqueries) Abfragen (Queries, Subqueries) Grundstruktur einer SQL-Abfrage (reine Projektion) SELECT [DISTINCT] {* Spaltenname [[AS] Aliasname ] Ausdruck} * ; Beispiele 1. Auswahl aller Spalten SELECT * ; 2. Auswahl

Mehr

Index Rebuild. DOAG Konferenz , Nürnberg DOAG Konferenz , Nürnberg Martin Hoermann Martin Hoermann

Index Rebuild. DOAG Konferenz , Nürnberg DOAG Konferenz , Nürnberg Martin Hoermann Martin Hoermann Index Rebuild DOAG Konferenz 17.01.2011, Nürnberg DOAG Konferenz 17.11.2011, Nürnberg Martin Hoermann info@ordix.de Martin Hoermann www.ordix.de info@ordix.de www.ordix.de Eine kurze Geschichte der Zeit

Mehr

ORACLE DATENBANKOPTIMIERUNG (BASICS)

ORACLE DATENBANKOPTIMIERUNG (BASICS) ORACLE DATENBANKOPTIMIERUNG (BASICS) INHALT 1 Motivation... 1 2 Automatische, regelmäßige DB-Optimierung... 2 2.1 Index-Rebuild... 2 2.2 Tabellen-Reorganisation... 2 2.3 Statistiken ermitteln... 3 2.4

Mehr

SQL Mystery I Anatomie eines SQL Befehls Lothar Flatz Senior Principal Consultant

SQL Mystery I Anatomie eines SQL Befehls Lothar Flatz Senior Principal Consultant Software & Informatik SQL Mystery I Anatomie eines SQL Befehls Lothar Flatz Senior Principal Consultant Ich stelle mich vor... Wer bin ich? über 25 Jahre Oracle Database Erfahrung (beginnend mit Version

Mehr

Speed up your Query - Strategien zur Optimierung von SQL-Queries

Speed up your Query - Strategien zur Optimierung von SQL-Queries Speed up your Query - Strategien zur Optimierung von SQL-Queries Ulrike Brenner click-click IT Solutions e.u. Wien Schlüsselworte: SQL, Performance Tuning Einleitung SQL-Queries, obwohl Basis all unserer

Mehr

FEHLERTOLERANTE LADEPROZESSE IN ORACLE

FEHLERTOLERANTE LADEPROZESSE IN ORACLE FEHLERTOLERANTE LADEPROZESSE IN ORACLE GEGEN SCHLAFLOSE NÄCHTE DOAG BI Konferenz 2012 Dani Schnider Trivadis AG München, BASEL BERN LAUSANNE ZÜRICH DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. HAMBURG MÜNCHEN

Mehr

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird. Thomas Studer Relationale Datenbanken: Von den theoretischen Grundlagen zu Anwendungen mit PostgreSQL Springer, 2016 ISBN 978-3-662-46570-7 Dieser Foliensatz darf frei verwendet werden unter der Bedingung,

Mehr

Datenschutz: Zugriffsrechte in SQL

Datenschutz: Zugriffsrechte in SQL 12. Datenschutz: Zugriffsrechte in SQL 12-1 12. Datenschutz: Zugriffsrechte in SQL 12-2 Inhalt Datenschutz: Zugriffsrechte in SQL 1. Anforderungen, Allgemeines 2. Die SQL-Befehle GRANT und REVOKE 3. Sichten

Mehr

Index Rebuild. DOAG Konferenz , Nürnberg. Martin Hoermann

Index Rebuild. DOAG Konferenz , Nürnberg. Martin Hoermann Index Rebuild DOAG Konferenz 17.11.2011, Nürnberg Martin Hoermann info@ordix.de www.ordix.de asktom.oracle.com Quelle: asktom.oracle.com/pls/asktom/f?p=100:11:745954239666467::::p11_question_id:2913600659112

Mehr

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R 1.008. Vorlesung #5. SQL (Teil 3)

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R 1.008. Vorlesung #5. SQL (Teil 3) Vorlesung #5 SQL (Teil 3) Fahrplan Besprechung der Übungsaufgaben Rekursion Rekursion in SQL-92 Rekursion in DBMS- Dialekten (Oracle und DB2) Views (Sichten) - gespeicherte Abfragen Gewährleistung der

Mehr

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort... 13

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort... 13 Auf einen Blick Vorwort... 13 Teil 1 Vorbereitung Kapitel 1 Einleitung... 17 Kapitel 2 SQL der Standard relationaler Datenbanken... 21 Kapitel 3 Die Beispieldatenbanken... 39 Teil 2 Abfrage und Bearbeitung

Mehr

Komplexe XML-Dokumente über XSU und Objekt-Typen aus der Datenbank generieren

Komplexe XML-Dokumente über XSU und Objekt-Typen aus der Datenbank generieren Komplexe XML-Dokumente über XSU und Objekt-Typen aus der Datenbank generieren Autor: Norbert Bahn, Opitz Consulting DOAGNews Q3_2005 Dieses Werk ist urheberrechtlich geschützt. Die dadurch begründeten

Mehr

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort 13

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort 13 Auf einen Blick Vorwort 13 Teil 1 Vorbereitung Kapitel 1 Einleitung 17 Kapitel 2 SQL - der Standard relationaler Datenbanken 21 Kapitel 3 Die Beispieldatenbanken 39 Teil 2 Abfrage und Bearbeitung Kapitel

Mehr

Datawarehouses, Materialized Views, Materialized View Logs, Query Rewrite

Datawarehouses, Materialized Views, Materialized View Logs, Query Rewrite Betrifft DWH1: Materialized Views für Data-Warehouses Art der Info Technische Info, Oracle8i Quelle Aus dem AI8-EF Kurs der Trivadis (Enterprise Features) Autor Andri Kisseleff (andri.kisseleff@trivadis.com)

Mehr

<Insert Picture Here> Security-Basics. Privilegien, Rollen, SQL und PL/SQL - inkl. 12c-Update. Carsten Czarski, ORACLE Deutschland B.V. Co.

<Insert Picture Here> Security-Basics. Privilegien, Rollen, SQL und PL/SQL - inkl. 12c-Update. Carsten Czarski, ORACLE Deutschland B.V. Co. Security-Basics Privilegien, Rollen, SQL und PL/SQL - inkl. 12c-Update Carsten Czarski, ORACLE Deutschland B.V. Co. KG Themen Rechte, Rollen und PL/SQL: Grundsätzliches Invokers vs.

Mehr

Wie sicher sind Ihre Daten in der DB?

Wie sicher sind Ihre Daten in der DB? Wie sicher sind Ihre Daten in der DB? Sven Vetter Technology Manager Principal Consultant, Partner DOAG Konferenz Nürnberg, 16.11.2010 Basel Bern Lausanne Zürich Düsseldorf Frankfurt/M. Freiburg i. Br.

Mehr

SQL aus der Praxis Neue Funktionen für Bäume und Beispiele für Analytic functions

SQL aus der Praxis Neue Funktionen für Bäume und Beispiele für Analytic functions SQL aus der Praxis Neue Funktionen für Bäume und Beispiele für Analytic functions Autor: Helmut Skarka DOAG 2008 pdv Technische Automation + Systeme GmbH, 2008 www.pdv-tas.de Seite 1 ÜBERBLICK Im folgenden

Mehr

Copyright 2013, Oracle and/or its affiliates. All rights reserved.

Copyright 2013, Oracle and/or its affiliates. All rights reserved. 1 Effiziente Speicherung für SAP Jörn Bartels Architect Oracle Database Server Technologies 2 Oracle 12c Jörn Bartels Architect Oracle Database Server Technologies 3 1997 Effiziente Speicherung für SAP

Mehr

Datenbanken Labor, MI : Übung 1 SQL - Abfragen Patrick Lipinski

Datenbanken Labor, MI : Übung 1 SQL - Abfragen Patrick Lipinski Aufgabe 1 Erstellen Sie eine Abfrage, die aus der EMP/DEPT-Tabelle die Felder Empno, Ename, Deptno und dname aller Mitarbeiter mit einem Gehalt von > 2500 ausgibt. select EMPNO, ENAME from EMP where SAL

Mehr

Neue Features Oracle Database 12.2 Wann denn endlich?

Neue Features Oracle Database 12.2 Wann denn endlich? Neue Features Oracle Database 12.2 Wann denn endlich? DOAG 2017 Datenbank Dierk Lenz Erfolgreich seit 1996 am Markt Firmensitz: Burscheid (bei Leverkusen) Beratung, Schulung und Betrieb/Fernwartung rund

Mehr

Introduction to Data and Knowledge Engineering. 6. Übung SQL

Introduction to Data and Knowledge Engineering. 6. Übung SQL Introduction to Data and Knowledge Engineering 6. Übung SQL Aufgabe 6.1 Datenbank-Schema Buch PK FK Autor PK FK ISBN Titel Preis x ID Vorname Nachname x BuchAutor ISBN ID PK x x FK Buch.ISBN Autor.ID FB

Mehr

Objekt-relationales Datenbanksystem Oracle

Objekt-relationales Datenbanksystem Oracle Objekt-relationales Datenbanksystem Oracle 1 Benutzerdefinierte Datentypen 1.1 Unvollständige Typen create-incomplete-type OR 1.2 Kollektionstypen REPLACE TYPE type-name create-varray-type OR TYPE type-name

Mehr

Neuerungen in Marco Patzwahl MuniQSoft GmbH Unterhaching

Neuerungen in Marco Patzwahl MuniQSoft GmbH Unterhaching Neuerungen in 12.2 Marco Patzwahl MuniQSoft GmbH Unterhaching Schlüsselworte Neuerungen in 12.2, DBA Einleitung Jede neue Datenbankversion bringt diverse Neuerungen mit. Nur welche sind wichtig und welche

Mehr

Multi-temporale Datenbank Features in Oracle 12c Philipp Salvisberg

Multi-temporale Datenbank Features in Oracle 12c Philipp Salvisberg Multi-temporale Datenbank Features in Oracle 12c Philipp Salvisberg Senior Principal Consultant November 2013 Oracle 12c hat ein neues Feature namens "Temporal Validity". Mit Temporal Validity können eine

Mehr

MIN oder MAX Bildung per B*Tree Index Hint

MIN oder MAX Bildung per B*Tree Index Hint E-Mail: rainer@lambertz-c.de Internet: http://www.lambertz-c.de MIN oder MAX Bildung per B*Tree Index Hint Zugegeben, der Trick Min- oder Maximalwerte per Index Hint zu ermitteln ist nicht neu. Gewöhnlich

Mehr

SQL als ETL Tool. DOAG Konferenz Nürnberg 2014 Christian König, CGI Business Intelligence Expert 18. November CGI Group Inc.

SQL als ETL Tool. DOAG Konferenz Nürnberg 2014 Christian König, CGI Business Intelligence Expert 18. November CGI Group Inc. SQL als ETL Tool DOAG Konferenz Nürnberg 2014 Christian König, CGI Business Intelligence Expert 18. November 2014 CGI Group Inc. Referent: Christian König Business Intelligence Expert, CGI (Germany) GmbH

Mehr

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung... 15

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung... 15 Vorwort..................................................... 13 Kapitel 1 Einleitung.......................................... 15 Kapitel 2 SQL der Standard relationaler Datenbanken... 19 2.1 Die Geschichte................................

Mehr

Oracle OLAP 11g: Performance für das Oracle Data Warehouse

Oracle OLAP 11g: Performance für das Oracle Data Warehouse Oracle OLAP 11g: Performance für das Oracle Data Warehouse Marc Bastien Oracle BI Presales Agenda Performanceprobleme in Oracle DWH: gibt s das überhaupt? Mögliche Gründe und Lösungen

Mehr

APEX Datenverwaltung Wo sind die Daten gerade? Dr. Gudrun Pabst

APEX Datenverwaltung Wo sind die Daten gerade? Dr. Gudrun Pabst APEX Datenverwaltung Wo sind die Daten gerade? Dr. Gudrun Pabst Basel Bern Lausanne Zürich Düsseldorf Frankfurt/M. Freiburg i. Br. Hamburg München Stuttgart Wien Voraussetzungen Alles hier gezeigte benötigt

Mehr

Überwachung problematischer Abfragen im Data Warehouse-Umfeld

Überwachung problematischer Abfragen im Data Warehouse-Umfeld Autoren Keywords Überwachung problematischer Abfragen im Data Warehouse-Umfeld Dr. Alexander Kick, Credit Suisse, alexander.kick@credit-suisse.com Daniel Steiger, Trivadis AG, daniel.steiger@trivadis.com

Mehr

Oracle Exadata Storage Server Performance erklärt SmartScan

Oracle Exadata Storage Server Performance erklärt SmartScan Products 31 Daniel Rey, OPITZ CONSULTING Schweiz GmbH Oracle Exadata Storage Server Performance erklärt SmartScan Im Herbst 2008 präsentierte Oracle an der OpenWorld den Exadata Storage Server und die

Mehr

Wiederholung VU Datenmodellierung

Wiederholung VU Datenmodellierung Wiederholung VU Datenmodellierung VU Datenbanksysteme Reinhard Pichler Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Wintersemester

Mehr

Die View von der View von der View PERFORMANTES SQL SCHREIBEN

Die View von der View von der View PERFORMANTES SQL SCHREIBEN Die View von der View von der View PERFORMANTES SQL SCHREIBEN Schlüsselworte SQL, Performance, Optimizer Uwe Embshoff Airpas Aviation AG Braunschweig Einleitung Es gibt viel Literatur zum Thema Oracle

Mehr

Aktuelle Entwicklungen

Aktuelle Entwicklungen PostgreSQL Aktuelle Entwicklungen (Hans-Jürgen Schönig), [HACKERS] Are we losing momentum? Bruce Momjian: August 2003 Momjian Blog: Postgres Is Hot Bruche Momjian Blog: June 7, 2008 I have attended or

Mehr

Oracle 10g Flashback. Andrea Held

Oracle 10g Flashback. Andrea Held Oracle 10g Flashback Andrea Held Seite 1-1 Agenda Flashback Technologien Architektur Anwendung Probleme Bewertung: Möglichkeiten und Grenzen Seite 1-2 Flashback Level Flashback Query Flashback Table Flashback

Mehr

DOAG 2015. Demo Kino: Advisors, Monitoring Werkzeuge in der Datenbank Ulrike Schwinn Business Unit Database Oracle Deutschland B.V.

DOAG 2015. Demo Kino: Advisors, Monitoring Werkzeuge in der Datenbank Ulrike Schwinn Business Unit Database Oracle Deutschland B.V. DOAG 2015 Demo Kino: Advisors, Monitoring Werkzeuge in der Datenbank Ulrike Schwinn Business Unit Database Oracle Deutschland B.V. & Co KG Monitoring Werkzeuge, Advisors... Einfaches Framework zum Monitoring

Mehr

Der SAS DataStep und die Prozedur SQL. 2014 Cellent Finance Solutions GmbH 05.06.2014 Seite: 1

Der SAS DataStep und die Prozedur SQL. 2014 Cellent Finance Solutions GmbH 05.06.2014 Seite: 1 Der SAS DataStep und die Prozedur SQL 2014 Cellent Finance Solutions GmbH 05.06.2014 Seite: 1 Zahlen und Fakten auf einen Blick Firmensitz: Geschäftsstellen: Branchenerfahrung: Umsatz: Anzahl Mitarbeiter:

Mehr

Oracle native json Support. Erste Schritte

Oracle native json Support. Erste Schritte Oracle native json Support Erste Schritte 1 Ausgangslage Als erster Schritt erstellen wir eine Tabelle, die wir für den weiteren Verlauf brauchen werden. Die Felder Id, Created und Username sind normale

Mehr

SQL- Performance - Tips

SQL- Performance - Tips SQL- Performance - Tips S.K. Consulting GmbH, München DB2_SQL_PERF - 1 - Inhaltsverzeichnis I. Aufwand und Kosten von Indexes II. Empfehlungen zum Anlegen von Indexes III. Empfehlungen zu Sortierungen

Mehr

Inhalt. 1. Indextypen B*Baum-Index Reversed Key Index Bitmap Index Funktionsbasierter Index

Inhalt. 1. Indextypen B*Baum-Index Reversed Key Index Bitmap Index Funktionsbasierter Index Inhalt 1. Indextypen B*Baum-Index Reversed Key Index Bitmap Index Funktionsbasierter Index 2. Indexverwendung Vergleich von B*Baum und Bitmap Steuerung der Indexverwendung Richtlinien für die Indizierung

Mehr