Vergessene (?) SQL- und PL/SQL- Funktionen

Ähnliche Dokumente
Powerful PL/SQL: Collections indizieren mit VARCHAR2- Indizes ein Praxisbeispiel

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Einstieg in das SQL- und Datenbanktuning Loblied auf den Tabellen-Index!

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Bibliografische Informationen digitalisiert durch

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

Themen des Kapitels. 2 Grundlagen von PL/SQL. PL/SQL Blöcke Kommentare Bezeichner Variablen Operatoren. 2.1 Übersicht. Grundelemente von PL/SQL.

Automatisierte Datenmigration mit dynamischen SQL

SQL and PL/SQL unleashed. Neuheiten bei Oracle 11g und Oracle 12c im Bereich SQL und PL/SQL

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

Oracle 9i Einführung. Performance Tuning. Kurs. Teil 12 Materialized Views. Universität Hannover. Praxisbeispiel. Migration.

5.8 Bibliotheken für PostgreSQL

XML-Schnittstellen zum Import und Export von Daten für eine Oracle DB Ein Erfahrungsbericht DOAG 2006

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

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Objektrelationale, erweiterbare Datenbanken WS 04/05

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS XMLType. Christian Senger/Andreas Schmidt XMLType 1/32

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Funktion definieren Gibt Summe der Gehälter zurück. Aufruf in einem SQL-Statement

ARBEITSBLATT ZUR SQL-BEFEHLEN

Mehr Ergebnisse: Linguistische Funktionen und Ähnlichkeitssuche mit SQL. Carsten Czarski ORACLE Deutschland B.V. & Co KG München

Unterabfragen (Subqueries)

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023

Prozedurale Datenbank- Anwendungsprogrammierung

Entwicklungsumgebung für die Laborübung

Hochschule Karlsruhe Technik und Wirtschaft Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

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

3.17 Zugriffskontrolle

NoSQL mit Postgres 15. Juni 2015

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

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

6. Sichten, Integrität und Zugriffskontrolle. Vorlesung "Informa=onssysteme" Sommersemester 2015

Data Warehouse schnell gemacht Performanceaspekte im Oracle DWH

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

Datenbanken 1 und Objektorientierte Datenbanken

MIN oder MAX Bildung per B*Tree Index Hint

Lösungen der Übungsaufgaben von Kapitel 10

PostgreSQL unter Debian Linux

[1] DBS-exercice

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

Dipl. Inf. Eric Winter. PostgreSQLals HugeData Storage Ein Erfahrungsbericht

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

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

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

Beispiel 1: Filmdatenbank

Abbildung 1: Das ERM. Nun zu den Tabellen: Zunächst wird aus jeder Entity eine Tabelle, d.h. wir erhalten:

Wanderwege weltweit Entwicklung einer Overlay-Karte aus OSM-Daten

Strukturierte Objekttypen

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel

StructuredQueryLanguage(SQL)

Datenbanken SQL. Insert, Update, Delete, Drop. Krebs

Views in SQL. 2 Anlegen und Verwenden von Views 2

Aufgabenstellung. Bekannte Lösungsansätze. Die Idee. Native Informix Architektur

Probeklausur Datenbanktechnologie

Fachhochschule Deggendorf Platzziffer:...

SQL. Fortgeschrittene Konzepte Auszug

DB2 SQL, der Systemkatalog & Aktive Datenbanken

Transaktionen in der Praxis. Dr. Karsten Tolle

Advanced Queues und XML-DB Integration von Oracle in einer SOA mit Hilfe von asynchroner Kommunikation und XML-Verarbeitung

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

Java Application 1 Java Application 2. JDBC DriverManager. JDBC-ODBC Br idge. ODBC Driver Manager. Dr iver C. Dr iver D.

SQL Tipps und Tricks Part III

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

Marcus Throll, Oliver Bartosch. Einstieg in SQL. Verstehen, einsetzen, nachschlagen. Galileo Press

Leseprobe: SQL mit MySQL - Band 4 Kompendium mit Online-Übungs-DB. Kompendium zur schnellen Kurzinformation der Datenbanksprache SQL/MySQL 5.

Data-Warehouse-Technologien

MySQL Queries on "Nmap Results"

Oracle Datenbank / Ubuntu

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

Datenbanksysteme I. Klausur zum Praktikum. Mehrere Professoren prüfen mit genau einem Beisitzer genau einen Studenten.

2. Datenbank-Programmierung

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #6. SQL (Teil 4)

PostgreSQL in großen Installationen

Die Datenmanipulationssprache SQL

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Datenbankentwicklung mit PureBasic

IT-Symposium

Extracting Business Rules from PL/SQL-Code

SQL Einstieg und Anwendung

Bedingungen über Werte Statische Integrität. CHECK-Klausel

Roland Tilgner. Solution Architects & Team Coaching DEVELOPMENT. ORACLE TEXT AUS PL/SQL-SICHT Features und Möglichkeiten

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Erstellen einer Datenbank. Datenbankabfragen

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

Details zu den Ausdrücken nach FROM, WHERE, GROUP BY und HAVING finden Sie in den Abschnitten über JOIN, WHERE und GROUP BY.

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

Einteilung von Datenbanken

SQL Cockpit & SAP HANA Prüfen Sie Ihre SQL Abfragen auf HANA-Tauglichkeit

Explizite Cursor. Cursor. Steuerung des expliziten Cursors. Explizite Cursor Funktionen

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

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

PDF-Reporting mit PL/SQL Daniel Dymala. DOAG Regionaltreffen Hamburg/Nord 16. September 2014

Oracle und LDAP. Zugriff auf LDAP-Daten aus einer Oracle-DB. Martin Busik

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

Transkript:

Vergessene (?) SQL- und PL/SQL- Funktionen Folge 1 Vortrag DOAG-Regiogruppe Freiburg/Südbaden 29.01.13

bulk collect (1) Aufgabenstellung: ca. 50.000 eingelesene Werte an Hand einer ID auf eine vorhandene Tabelle übernehmen Tabelle foo_doag_daten id number zahl1 number Abgleich übernehmen Tabelle foo_doag_import id number zahl1 number 2/14

bulk collect (2) Standard -Lösung mit Schleife: declare begin end / for c in (select id, zahl1 from foo_doag_import) loop update foo_doag_daten set zahl1 = c.zahl1 where id = c.id end loop 3/14

bulk collect (3) Lösung mit bulk -Anweisungen: declare type zahlen_tt is table of number index by binary_integer tab_id zahlen_tt tab_wert zahlen_tt begin select id, zahl1 bulk collect into tab_id, tab_wert from foo_doag_import forall i in 1..tab_id.count update foo_doag_daten set zahl1 = tab_wert(i) where id = tab_id(i) end / 4/14

bulk collect (4) Laufzeiten-Vergleich: (ca. 50.000 Zeilen, DB 11R2, aktueller Standard-PC mit opensuse Linux) Laufzeiten in sec mit Index auf ID ohne Index auf ID for-schleife (statisches SQL) for-schleife (dynamisches SQL) bulk collect (statisch+dynamisch) 7,8 69,8 8,8 71,3 3,8 66,3 Laufzeit-Gewinn v.a. durch Einsparung des ständigen Context-Wechsels zwischen PL/SQL und SQL Einsparung der (identischen) parse-phase bei dynamischem SQL 5/14

bulk collect (5) mehrere Möglichkeiten zur Fehlerbehandlung ( save exceptions ) auch zusammen mit dynamischen SQL: declare type zahlen_tt is table of number index by binary_integer tab_id zahlen_tt tab_wert zahlen_tt l_id number := 1 l_spalte varchar2(30) := 'zahl1' begin execute immediate 'select id, ' l_spalte ' from foo_doag_import where id >= :p_id' bulk collect into tab_id, tab_wert using l_id end / forall i in 1..tab_id.count execute immediate 'update foo_doag_regio set ' l_spalte ' = :p_wert where id = :p_id ' using tab_wert(i), tab_id(i) 6/14

subselect (1) Ausgangslage: Tabelle mit Wetterstationen mit eine Zeile pro Station, Jahr + 12 Monatswerte Jahre fehlen u.u. komplett (d.h. keine Zeile) Station Jahr Jan Feb Mar Apr Mai... 1030 2004 645 544 526 319 204.. 1030 2005 680 538 574 289 217.. 1030 2007 621 564 498 304 221.................. auszuwertende Jahre und Monate sind in Tabellen hinterlegt 7/14

subselect (2) Abfrage Jahr, Monat, Gradtagszahl einschließlich fehlender Jahre, dazu Jahre+Monate als subselect select j.jahr,j.monat,decode(j.monat,1,w.monat_01...,12,w.monat_12 ) as gtzahl from em3_t_wetterstation w -- subselect liefert vollständiges Kreuzprodukt (Jahr, Monat),(select jahr, monat from em3_t_auswertung_monate m,em3_t_auswertung_jahre j ) j where w.wetterstationen_nr(+) = 9029 and w.jahr(+) = j.jahr 8/14

subselect (3) Wie zuvor, aber zusätzlich das Maximum der Januar- Werte im +/- 5-Jahre-Zeitraum select j.jahr,j.monat, (select max(monat_12) from em3_t_wetterstation where jahr between j.jahr-5 and j.jahr+5) as januar_max,decode(j.monat,1,w.monat_01...,12,w.monat_12 ) as gtzahl from em3_t_wetterstation w,(select jahr, monat from em3_t_auswertung_monate m,em3_t_auswertung_jahre j ) j where w.wetterstationen_nr(+) = 9029 and w.jahr(+) = j.jahr 9/14

subselect (4) Abfrage: Jahre+Monate ohne Gradtagszahlen, mittels not exists + subselect select j.jahr, m.monat from em3_t_auswertung_monate m,em3_t_auswertung_jahre j where jahr < extract (YEAR from sysdate) and not exists (select wetterstationen_nr from em3_t_wetterstation w where jahr = j.jahr and decode(m.monat,1,w.monat_01..,12,w.monat_12 ) is not null ) order by jahr, monat 10/14

with (1) Unterabfragen werden ausgelagert in einen temporär definierten View with t_view as (select. ) select. from t_view komplexe Abfragen können damit besser strukturiert werden die mit with definierte Abfrage kann im select mehrfach verwendet werden alternative Lösung zu subselect oder views Laufzeiten müssen im Einzelfall verglichen werden 11/14

with (2) Abfrage Jahr, Monat, Gradtagszahl einschließlich fehlender Jahre, dazu Jahre+Monate mit with with t_alle_monate as -- vollständiges Kreuzprodukt (Jahr, Monat) (select jahr, monat from em3_t_auswertung_monate m,em3_t_auswertung_jahre j ) select j.jahr,j.monat,decode(j.monat,1,w.monat_01...,12,w.monat_12 ) as gtzahl from em3_t_wetterstation w, t_alle_monate j where w.wetterstationen_nr(+) = 9029 and w.jahr(+) = j.jahr 12/14

materialized views (1) Ergebnisse komplexer Abfragen als de-normalisierte Tabelle hinterlegen typische Anwendungsgebiete: DWH, Schnittstellen MV sind read only MV können mit eigenen Indices versehen werden MV belegen Speicherplatz performanter als herkömmliche Views, dafür i.d.r. keine aktuelle Daten Problemzone ist der refresh der Daten manuell vs. zeitgesteuert vs. automatisch full vs. incremental ( fast ) nicht geeignet für zeitkritische Daten mit hoher Änderungsrate 13/14

Fragen? Vorschläge für Fortsetzungen? Beiträge von??? 14/14