Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

SQL: Datenbankabfragen beschleunigen

Welche Konzepte führen zum größten Geschwindigkeitsgewinn?

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Dieser Film fasst die Konzepte zusammen, die von allen Varianten die meisten Geschwindigkeitsgewinne bringen.

Transkript

Damit sind wir am Ende des Video-Trainings zum SQL-Tuning angelangt. Bevor ich Ihnen noch so einen Überblick gebe, an welchen Stellen es sich wirklich lohnt, Arbeit hinein zu stecken, damit es schneller wird, würde ich gerne noch die beiden wesentlichen Ziele einmal erwähnen wollen. Nämlich erstens: Korrektheit geht vor Geschwindigkeit. Es ist also kein Selbstzweck, dass es schneller wird, sondern immer nur auf dem Weg zu richtigen Daten. Und bei der Beurteilung der Werte ist eine Veränderung so im 100 % Bereich plus/minus 10 % völlig uninteressant. Darüber hinaus muss man überlegen, ob es sich lohnt, eine kompliziertere Abfrage zu schreiben, damit sie unwesentlich schneller wird, man sie aber später nur schlechter pflegen kann. Damit kommen wir zu den wichtigsten Ergebnissen, die aus diesen ganzen Untersuchungen übrig geblieben sind. Ich habe hier so ein bisschen die Highlights zusammengefasst, da wo es sich wirklich lohnt. Erstens geht es natürlich damit los, dass eine Datenbank normalisiert werden muss. Sie haben gesehen, dass anschließende Zusammenführen der nun getrennten Daten ist kein Zeitproblem. Wenn Sie Filter einsetzen und das wird ganz häufig vorkommen, dann bitte auf Felder, die auch einen Index haben. Um es ganz kurz zu formulieren: Ein Index kostet nichts, bringt aber viel. Die Datenbank wird nicht fühlbar größer, das ist nicht zu messen. Sie wird nicht langsamer. Aber der Zugriff wird bedeutend schneller. Wenn Sie Archivdaten haben, die sich sicher nicht mehr verändern, auf die Sie immer nur mit Aggregat-Funktionen zugreifen, dann lohnt es sich, diese auszulagern und dort direkt zsammen- gefasst aggregiert auch zu speichern. Das ist ein bedeutender Geschwindigkeitszuwachs. Und in Tabellen sollten Sie ausschalten, dass dort das Unterdatenblatt oder ein Filter in irgendeiner Form aktiv ist. Das ist während der Entwicklungsphase ganz praktisch, aber anschließend für die Benutzer sehr Laufzeit vermindernd. Wenn Sie für die Benutzer etwas anzeigen, dann möglichst auch nur die benötigten Felder. Das geht zwar nicht direkt auf die Zugriffs-Geschwindigkeit. Aber die Anzeige-Geschwindigkeit, das was auf dem Bildschirm dargestellt wird, kostet auch erhebliche Zeit. Und zwar, um so mehr, je mehr Felder auch angezeigt werden. Dann geht es direkt weiter mit berechneten Abfragefeldern. Das ist somit das schlimmste, was man in einer Abfrage machen kann - ein Feld zu berechnen und danach dann zu sortieren. Das Berechnen ist nicht das schlimmste. Aber wenn Sie ein Feld sortieren wollen, muss es bis zum Schluss bekannt sein, weil ein berechnetes Feld keinen Index haben kann. Das bedeutet, es müssen in unserem Beispielfall alle 275.000 Datensätze zuerst berechnet werden und danach kann die Sortierung beginnen. Für die verschiedenen Filter sollten Sie vor allem auf den LIKE-Filter verzichten. Erst recht, wenn er ein führendes Sternchen hat und ein NOT, oder gar ein NOT LIKE ist noch viel schlimmer. Das sind so die langsamsten, sogar mit Abstand die langsamsten Filter. Wenn es da eine andere Version gibt, und ich habe Ihnen ein paar Varianten gezeigt, dann sollten Sie die unbedingt bevorzugen. Ähnlich ist das mit Funktionen gegenüber SQL-Syntax. So etwas wie IsNull oder die IsNull- Funktion, die ist so viel langsamer, wie ohnehin die meisten Funktionen, dass Sie immer die SQL-Variante bevorzugen sollten. Und auch die mathematische Angabe, beispielsweise im Vergleich zu einem BETWEEN, also einem zwischen, ist erheblich schneller und lässt sich sogar für Textsuchen angeben. Und im Zusammenhang mit Text denken Sie bitte auch daran, filtern Sie Texte bitte auch nur für Text-Datenfelder. Ein Datum in einem Datum/Zeit-Datentyp sollten Sie nicht mit Text filtern. Das ist richtig langsam. Haben Sie mehrere Tabellen, dann sollten Sie die mit den üblichen LONG-Zahlen verknüpfen, wie das auch bei Primär-Schlüsseln mit Autowerten durchaus automatisch kommt. Das ist erheblich schneller, als wenn Sie diese über Text-Felder, oder gar mehrere Text-Felder verknüpfen. Unterabfragen können die durchaus lagsamen Outer-Joins erheblich beschleunigen, wenn das inhaltlich technisch möglich ist. Sie sollten es wenigstens prüfen. Auch wenn so ein Outer-Join natürlich im Abfrage-Entwurf erst einmal leichter zu handeln ist, weil Sie direkt die Verbindungslinie sehen. Müssen Sie Daten zusammen fassen, oder eindeutig Ergebnisse sehen, dann nutzen Sie besser ein DISTINCT, statt GroupBy. Da müssen Sie möglicherweise im SQL-Code was reinschreiben, statt oben einfach auf eine Schaltfläche zu klicken. Aber der Unterschied ist es wert. Und eben so bei UNION und UNION ALL. Der Normalfall, das UNION, wird relativ selbstverständlich erzeugt. Aber meistens reicht ein UNION ALL. Und das alles in dieser Ausführlichkeit jetzt wieder zusammengefasst in die drei Highlights, deren erste Regel heißt: Keine Domänenfunktion und überhaupt wenig Funktionen! Die sind langsam. Domänenfunktionen sind mit einem so einem Abstand am aller langsamsten, dass die eigentlich völlig streichen sollten. Wenn es eine Chance gibt, sollten Sie eine mathematische Bedingung bevorzugen. Und die wichtigste Regel unter allen lautet: INDEX, INDEX, INDEX!!! Ich hoffe, dass Ihnen diese Untersuchung zu den Möglichkeiten, wie Sie SQL -Abfragen beschleunigen können, dass Ihnen weiter geholfen haben und Ihnen viele Anregungen geben für eigene Datenbanken geben, um diese noch schneller und dabei immer noch richtig zu machen.

SQL: Datenbankabfragen beschleunigen

Entdecken Sie, wo das Beschleunigungspotenzial für SQL-Datenbanken liegt und lernen Sie die Rezepte für bessere Performance.

2 Std. 15 min (39 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Exklusiv für Abo-Kunden
Erscheinungsdatum:25.03.2015

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!