SQL Performance - Tips Do's & Don'ts

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

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

SQL-Optimizer und Optimierung bei DB2

Informatik 12 Datenbanken SQL-Einführung

SQL: statische Integrität

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

SQL. Fortgeschrittene Konzepte Auszug

Bibliografische Informationen digitalisiert durch

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Unterabfragen (Subqueries)

2. Programmierung in C

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

Labor 3 - Datenbank mit MySQL

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

MIN oder MAX Bildung per B*Tree Index Hint

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I

Family Safety (Kinderschutz) einrichten unter Windows 8

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

Professionelle Seminare im Bereich MS-Office

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen.

Microsoft Access 2013 Spezifikationen

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Sage Start Einrichten des Kontenplans Anleitung. Ab Version

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

Monitoring-Service Anleitung

Die Tabellenvorlage im Katalog für Tabellen speichern... 2 Weiteres zu Schnellbausteinkatalogen EDV + Didaktik - Dr. Viola Vockrodt-Scholz

Views in SQL. 2 Anlegen und Verwenden von Views 2

Zeichen bei Zahlen entschlüsseln

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

7. Übung - Datenbanken

Family Safety (Kinderschutz) einrichten unter Windows 7

Auswertung erstellen: Liste mit -

Hilfedatei der Oden$-Börse Stand Juni 2014

Whitepaper. Produkt: combit Relationship Manager. Einbindung externer FiBu-/Warenwirtschaftsdaten. combit GmbH Untere Laube Konstanz

Leichte-Sprache-Bilder

Referenzielle Integrität SQL

EINFACHES HAUSHALT- KASSABUCH

Erstellen einer digitalen Signatur für Adobe-Formulare

Kurzanleitung RACE APP

Wie Sie beliebig viele PINs, die nur aus Ziffern bestehen dürfen, mit einem beliebigen Kennwort verschlüsseln: Schritt 1

Anwendungsbeispiele Buchhaltung

Datenaufbereitung in SPSS. Daten zusammenfügen

Tutorials für ACDSee 12: Hochladen von Fotos auf Ihren Account bei ACDSeeOnline.com

Waimea Phone Monitor. Handbuch. Anzeige von eingehenden Anrufen auf Telefonanlagen mit TAPI-Interface

Anwendungsbeispiele Buchhaltung

Hilfe und Support. Statische Hilfe. Inhaltsverzeichnis der Hilfetexte. Reihe TextGrid-Tutorials

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Reporting Services und SharePoint 2010 Teil 1

Projektbericht Gruppe 12. Datenbanksysteme WS 05/ 06. Gruppe 12. Martin Tintel Tatjana Triebl. Seite 1 von 11

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Ohne Fehler geht es nicht Doch wie viele Fehler sind erlaubt?

Versand Etiketten / Endlosdruck

Spielbericht Online. Nachbearbeitung durch die Vereine ist erforderlich bei: a) Nichtantritt des angesetzten Schiedsrichters

Dokumentation Bonuspunkteverwaltung. Verfasser(in) / Autor: Check it Consulting

Rechnung WAWI01 zu WAWI Version 3.8.6x01

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Österreichische Trachtenjugend

MySQL Installation. AnPr

Oracle: Abstrakte Datentypen:

a n auf Konvergenz. Berechnen der ersten paar Folgenglieder liefert:

Quick Guide Mitglieder

Kurzanweisung für Google Analytics

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Unterrichtsformalitäten für Mathematik, 3. Klasse

1. Einführung Erstellung einer Teillieferung Erstellung einer Teilrechnung 6

Beispiele für Datenbank-Struktur-Probleme

Ein Ausflug zu ACCESS

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

Berechnungen in Access Teil I

Bei der Focus Methode handelt es sich um eine Analyse-Methode die der Erkennung und Abstellung von Fehlerzuständen dient.

Titel der Stunde: TELEFONIEREN, HÖFLICHKEIT

Anzeige von eingescannten Rechnungen

Bedienungsanleitung Anlassteilnehmer (Vereinslisten)

Artikel Schnittstelle über CSV

Wie können Sie eine Client Lizenz wieder freigeben?

Kurzanleitung zur Bereitstellung von Sachverhalten und Lösungen zum Universitätsrepetitorium auf dem Server unirep.rewi.hu-berlin.

Grundbegriffe der Informatik

Auswahlabfragen mit ACCESS

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation

INHALT 1. INSTALLATION DES V-MODELL XT UNTER WINDOWS 7 2. INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

Bedienungsanleitung. Matthias Haasler. Version 0.4. für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof

ecaros2 - Accountmanager

Arbeitsblätter. Sinnvolle Finanzberichte. Seite 19

INHALTSVERZEICHNIS Allgemeine Beschreibung... 3 Verwendung der Webseite... 4 Abbildungsverzeichnis... 12

Zahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009)

Excel Pivot-Tabellen 2010 effektiv

4. BEZIEHUNGEN ZWISCHEN TABELLEN

Die Industrie- und Handelskammer arbeitet dafür, dass Menschen überall mit machen können

Fachhochschule Deggendorf Platzziffer:...

Benutzerhandbuch - Elterliche Kontrolle

Erstellen eines Formulars

Was meinen die Leute eigentlich mit: Grexit?

AUTOMATISCHE -ARCHIVIERUNG. 10/07/28 BMD Systemhaus GmbH, Steyr Vervielfältigung bedarf der ausdrücklichen Genehmigung durch BMD!

Die Bundes-Zentrale für politische Bildung stellt sich vor

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

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Transkript:

SQL Performance - Tips Do's & Don'ts S.K. Consulting GmbH, München DB2_SQL_PERF - 1 -

Inhaltsverzeichnis I. Richtlinien bei der Verwendung von SQL 1.1. In Programmen "verbotene" SQL- Anweisungen 1.2 SQL - Anweisungen, die die Indexnutzung verhindern 1.4. Ungünstig formuliert e SQL - Anweisungen 1.5 Ungünstig formulierte JOIN - Anweisungen 2. Benutzen des EXPLAIN-Statements S.K. Consulting GmbH, München DB2_SQL_PERF - 2 -

1.1. In Programmen "verbotene" SQL- Anweisungen alle DDL-Anweisungen inkl. ALTER alle Anweisungen, die Einträge im DB2-Katalog verursachen:! GRANT und REVOKE! PREPARE, EXECUTE! Lesen im Katalog während des Programmablaufs ( SELECT... FROM SYSIBM.??? ) Was ist mit dem Aufbau temporärer Tabellen in einem Programm???? (CREATE <table> am Programmanfang - DROP am Ende des Programms) S.K. Consulting GmbH, München DB2_SQL_PERF - 3 -

1.2 SQL - Anweisungen, die die Indexnutzung verhindern Bestimmte SQL-Formulierungen lassen keine Indexnutzung zu und sollten folglich neu formuliert werden 1. Selektion mit OR ohne "=" als Operator z.b. FELDA > 60 OR FELDA < 50 2. Verwendung von "NOT" in Prädikaten oder Ausdrücken NOT IN, NOT BETWEEN, NOT LIKE, <> 3. LIKE-Prädikate auf Felder mit FIELDPROC-Prozedur 4. Vergleiche mit Hostvariablen oder anderen Feldern mit! ungleichem Datentyp! ungleicher Länge oder Präzision 5. Vergleiche mit ungleich dimensionierten Literalen z.b. WHERE ABTEILUNG = "A00 " anstatt WHERE ABTEILUNG = "A00" 6. Vergleiche mit aritmethischen Ausdrücken im Prädikat z. B.... WHERE PREIS > EK-PREIS * 1.3 Wichtig ist in diesen Zusammenhang immer, daß ein möglichst selektiver Index auf die, oder eines der Felder gelegt ist, die im SQL-Prädikat zu Vergleichen herangezogen werden("composite indexes"??). S.K. Consulting GmbH, München DB2_SQL_PERF - 4 -

1.3 SQL - Anweisungen ohne Indexnutzung SQL - Anweisungen, die eine Indexbenutzung zulassen, aber aufgrund der EXPLAIN-Auswertung erkannt wurde, daß kein Index genutzt wird Verwendung von Indizes ist für DB2 V5 möglich, wenn nach einer Spalte selektiert wird mit: 1. Vergleichsoperationen (ohne OR (!)) A = 540; A > 450; A < 650; 2. BETWEEN, z.b. FELDA BETWEEN 100 AND 300 3. IN, z.b. FELDA IN (123, 450, 564) 4. LIKE mit definiertem Beginn des Suchkriteriums z.b. FELDA LIKE "D%" oder FELDA LIKE " D" 5. OR-Verknüpfungen mit "=" als Operator z.b. FELDA = 123 OR FELDA = 456 OR FELDB =234 6. Angabe von "NOT" mit < oder > Operator z. B. NOT FELDA > 123 oder FELDA ^> 123 S.K. Consulting GmbH, München DB2_SQL_PERF - 5 -

1.4. Ungünstig formuliert e SQL - Anweisungen Zu dieser Kategorie gehören "queries", die anders formuliert eine höhere Performance garantieren könnten. z.b.: Auflösung von OR Verknüpfungen durch UNION SELECT * FROM KONTO WHERE KTO_NR = 123 OR KTO_NR = 456 wird aufgelöst in SELECT * FROM KONTO WHERE KTO_NR = 123 UNION SELECT * FROM KONTO WHERE KTO_NR = 456 Auflösung von OR Verknüpfungen durch IN SELECT * FROM KONTO WHERE KTO_NR IN ( 123, 456 ) Die Ergebnisse hieraus müssen in jedem Fall über EXPLAIN verifiziert werden. S.K. Consulting GmbH, München DB2_SQL_PERF - 6 -

Auch "queries" mit Sub-Select's sind in diese Überlegungen mit einzubeziehen Auflösung von "subqueries" / "correlated queries" in JOIN - Formulierungen z.b. SELECT NAME, VORNAME, TEL_NR FROM MITARBEITER WHERE PERSNR IN ( SELECT ABT_LTNR FROM ABTEILUNG ) Zur Ermittlung aller ABTLTNR kann KEIN Index benutzt werden!!! Bei der folgenden Formulierung kann jedoch ein Index gewählt werden: SELECT NAME, VORNAME, TEL_NR FROM MITARBEITER, ABTEILUNG WHERE PERSNR = ABT_LTNR S.K. Consulting GmbH, München DB2_SQL_PERF - 7 -

1.5 Ungünstig formulierte JOIN - Anweisungen SQL-Anweisungen, die ungünstige JOIN-Formulierungen enthalten können die Perfromance ebenfalls nachhaltig negativ beeinflussen... Die Angabe "innerer" und "äußerer" Tabellen in der richtigen Reihenfolge kann bei einer JOIN-Operation erhebliche Zeiteinsparungen zur Folge haben, wenn die Tabelle, auf die das am stärksten einschränkende Selektionskriterium zeigt zuerst bearbeitet werden kann. Beispiel: SELECT F.NAME, T.NAME, VORNAME, SEMINAR FROM TEILNEHMER T, FIRMA F WHERE T.FNR = F.FNR AND F.PLZ = "8000" Die richtige Reihenfolge wäre: SELECT F.NAME, T.NAME, VORNAME, SEMINAR FROM FIRMA F, TEILNEHMER T WHERE F.FNR = T.FNR AND F.PLZ = "8000" Das zugrundeliegende Modell: FIRMA (FNR) wird gemeldet meldet TEILNEHMER (FNR,LFD_NR) S.K. Consulting GmbH, München DB2_SQL_PERF - 8 -

1. Richtlinien bei der Verwendung von SQL Dasselbe gilt für Spalten, die beim JOIN zum Vergleich herangezogen werden, in der einen Tabelle als "foreign key" in der anderen als "primary key" also eindeutig vorliegen. Vergleiche sollten immer auf die eindeutigen Wertebereiche laufen (!) Beispiel: SELECT F.NAME, T.NAME, VORNAME, SEMINAR FROM FIRMA F, TEILNEHMER T WHERE F.FNR = T.FNR AND T.FNR = 4321 Die Formulierung ist ungünstig, da T.FNR "foreign key" in TEILNEHMER ist und daher Werte mehrfach vorkommen können: "Mehrere Teilnehmer können von derselben Firma sein." Besser ist folgende Formulierung: SELECT F.NAME, T.NAME, VORNAME, SEMINAR FROM FIRMA F, TEILNEHMER T WHERE F.FNR = T.FNR AND F.FNR = 4321 S.K. Consulting GmbH, München DB2_SQL_PERF - 9 -

2. Benutzen des EXPLAIN-Statements EXPLAIN stellt Optimizer-Informationen in die PLAN_TABLE und gibt Auskunft über Index-Benutzung Zugriffsmodus SORT-Alghorithmen Erzeugen von temporären Tabellen EXPLAIN hilft Performance-Engpässe zu erkennen und legt entsprechende Informationen in der Tabelle PLAN_TABLE ab S.K. Consulting GmbH, München DB2_SQL_PERF - 10 -