SQL: Datenbankabfragen beschleunigen

Massendaten erzeugen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Um ausreichende Mengen an Daten zum Testen zu haben, gibt es verschiedene Methoden. Mit Abstand am effektivsten ist ein Kreuzprodukt.

Transkript

Wenn es um SQL-Tuning, also letzten Endes auch eine Geschwindigkeits-Messung geht, dann müssen wir auch kurz einmal darüber reden, was wir, oder vor allem, wen wir messen. Einzelne Datensätze sind für solche Tests völlig ungeeignet. Und einzelne sind auch die ersten 100. Da ist das Problem, dass Sie solche großen Datenmengen gar nicht mehr manuell eingeben. Sie brauchen irgend eine Technik, um schnell an große Mengen Daten zu kommen. Wenn Sie Glück haben, gibt es irgendwo eine Datenbank, wo Sie sich einfach schnell etwas importieren können. Aber meistens sind solche Daten aus verschiedenen Gründen nicht geeignet. Wegen Datenschutz dürfen Sie die nicht benutzen, oder sie sind sehr einseitig, weil da bestimmte häufig vorkommen und Ähnliches. Das kann man natürlich auch mit VBA-Code und einer Zufalls-Funktion erzeugen. Aber zum einen ist die Programmierung ein bisschen schwierig, sodass Sie nicht immer die gleichen Ergebnisse sehen und sich Datensätze wiederholen. Und das soll also flexibel für beliebige Datentypen und Wertebereiche sein. Dann haben Sie im Grunde fast mehr Mühe mit der Programmierung, als wenn Sie es selber geschrieben hätten. Es gibt häufig diese so genannten "unästhetischen" Inhalte. Da steht also kein Klartext Vorname, sondern eine zufällig erzeugte Buchstabenkombination. Das ist auch ein bisschen schwieriger zu Prüfen und zu testen, wenn Sie sagen, in diesem Feld steht das Richtige oder nicht Richtige drin. Ist das für einen Vornamen, einen ent- sprechenden Inhalt leichter zu erkennen, als für solche zufälligen Inhalte? Also muss ich zu der Alternative greifen. Die macht tatsächlich sehr wenig Mühe. Ich werde aus einem Satz von Strat-Daten ein karthesisches Produkt erzeugen, und damit dann die neuen Datensätze schreiben. Das karthesische Produkt kennen Sie auch vielleicht unter dem Namen Kreuzprodukt. Achtung - nicht die Kreuztabellenabfage! Sondern ein Kreuzprodukt. Das entsteht meistens versehentlich und unfreiwillig, dadurch dass Sie mehrere Datenquellen in der Abfrage ohne Beziehung unter einander erstellen. Das führt dazu, dass schlicht jeder Datensatz aus der einen mit jedem Datensatz aus der anderen Datenquelle verknüpft wird. Damit wird die Anzahl der Datensätze miteinander multipliziert. Das können wir uns vielleicht einmal in echt angucken. Es gibt in dieser Datenbank eine Tabelle Start-Daten. Die enthält Vornamen und Nachnamen. Zu jedem Namen eine Zahl. Sie sehen, hier ist schlicht durchgezählt und ein beliebiges Datum eingegeben. Insgesamt 525 Stück. Es ist in diesem Fall auch, das ist normalerweise gar nicht nötig, so organisiert, dass jeder Vorname exakt einmal vorkommt und jeder Nachname auch, sodass die Kombination aus Vor- und Nachnamen, nämlich dieses Lorenz mit diesen und solchen Nachnamen alle einzeln kombiniert, dass das in der Kombination immer noch keine Duplikate ergibt. Im normalen Leben, wenn Sie zufällige Testdaten hätten, dann steht da sicherlich häufiger mal ein Michael, ein Andreas oder Ähnliches drin, und Müller, Meier, Schmidt auch. Und dann wird der eine Michael Müller mit dem anderen auch wieder zu einer Michael Müller Kombination führen. Das sind Daten, die ich hier einfach nicht haben möchte. Deswegen habe ich dafür gesorgt, dass das wirklich 525 eindeutige, jeweils Vor- und Nachnamen gibt. Die sollen nachher ganz viele Ergebnisse erzeugen. Das heißt, es gibt hier eine Abfrage, die ich mir in der Entwurfs-Ansicht angucke, die beide Male die Tabelle Start-Daten benutzt. Falls Sie sich gerade wundern, warum die hier anders heißt - Sie können das entweder hier im Alias umbenennen. Oder wenn Sie es sich in der SQL-Ansicht angucken, dann steht dort so etwas From Tabelle Start-Daten as tblStart1. Das As kann man auch weglassen. Das ist nichts anderes als eine Umbenennung. Gleiche Tabellennamen sind nicht zulässig als Datenquelle, also füge ich die zwei einmal ein und benenne die um. Dann sieht es hier aus, als seien es unterschiedliche. Physisch ist es die gleiche Tabelle. Dann kann man hier deutlich unterscheiden. Aus Start 1 nehme ich den Vornamen, aus Start 2 den Nachnamen. Und dann habe ich hier noch das berechnete Feld, nämlich Vorname und Nachname, wenn ich das einmal ein bisschen breiter zeihe, in diese Anfüge-Abfrage berechnet und in die Zieltabelle hineingeschrieben, damit dort nicht ein berechnetes Feld ist. Dann wird noch aus der einen Tabelle die Zahl übernommen und die Summe mit der anderen gebildet und mit einem zufällig gewählten Wert multipliziert, nur damit da beliebige Zahlen entstehen und nicht so langweilig durchnummeriert ist. All das bildet dieses so genannte Kreuzprodukt, oder karthesische Produkt, wie immer Sie das gerade nennen. Das 525 Datensätze hier mit 525 Datensätzen dort kombiniert werden, das kann man - Achtung! Jetzt nicht ausführen! Ich will nämlich wirklich nicht noch einmal anfügen, sondern nur die Ansicht angucken - das kann man hier in der Vorschau ansehen. Sie merken, aus den 525 Daten entstehen diese 275.000. Deswegen steht hier dieser Nachname 525 Mal hinter einander. Das ist die einfachste Möglichkeit, sich extrem viele Test-Daten zu erzeugen, wobei ich das Wort extrem bei 275.000 noch nicht in den Mund nehmen wollte. Da geht es bei einer Milliarde vielleicht los. Denken Sie daran, Datenbanken sind für große Mengen an Daten gedacht. Und große Mengen sind aber so was von sechsstellig, dass Sie hier mit 275.000 eigentlich schon fast an der Untergrenze sind. Das dient dann dazu, auch z. B. Last-Tests zu machen. Was passiert, wenn drei Leute gleichzeitig an so vielen Daten arbeiten, wenn die gefiltert werden? Da muss dann schon einmal ein bisschen Butter bei die Fische. Also machen Sie nicht zu wenig. Sie merken hier, aus bescheidenen 525 Datensätzen kann man durch Quadrierung letzten Endes sehr viele Daten sehr schnell erzeugen.

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!