SQL Server: Performance-Optimierung

Mit Nonclustered Indizes arbeiten

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Hier erfahren Sie, wie Sie einen Nonclustered Index anlegen und löschen können.
07:02

Transkript

Für das Anlegen von Indizes bietet sich natürlich wieder das SQL Server Management Studio an. Ich bin hier schon einmal hinübergewechselt und ich habe jetzt im Prinzip zwei Möglichkeiten: Ich kann es einmal direkt über T-SQL machen und zum anderen auch über eine Oberfläche. Ich beginne mit Letzterem. Ich kann zum einen hier in der Sicht hingehen. die Tabelle erweitern, auf "Indexes" klicken und einen neuen Index anlegen. Sie sehen hier alle Möglichkeiten, die ich hier an der Stelle habe, unter anderem auch einen Non Clustered Index. Der Dialog schlägt mir vor, welche Namen ich vergeben soll. Ich kann hingehen, wenn ich möchte, diesen Index als eindeutig, als "unique" kennzeichnen. Ich kann hier in diesem Bereich festlegen, welche Spalten indexiert werden sollen, und Sie sehen, ich kann beliebig viele Spalten auswählen. Ich sollte natürlich nur die Spalten auswählen, die zusammen in einer Suche auch auftauchen, zum Beispiel "EAN" und "Bezeichnung". Und wenn ich dann auf "OK" klicke, tauchen die beiden hier unten auf, soweit nicht ungewöhnlich. Letztendlich sehen Sie aber, Sie können die Reihenfolge ändern. Sie können sagen; "Move Down", "Move Up", damit ändert sich hier die Reihenfolge der indexierten Spalten. Und die Reihenfolge ist auch nicht ganz unwichtig. Als Regel sollten Sie die Reihenfolge so bestimmen, dass Sie Spalten, die eine möglichst große Anzahl unterschiedlicher Werte hat, möglichst weit oben in der Liste haben, und Spalten, die relativ homogene Werte haben, entsprechend möglichst weit unten in dieser Liste. Das heißt, ich könnte zum Beispiel sagen, die EAN ist möglicherweise ein Ticken unterschiedlicher von Zeile zu Zeile, als die Bezeichnung. Dann kann ich hingehen und hier diese "Included columns" einfügen. Das heißt, zusätzliche Spalten kann ich entsprechend auswählen. Damit würde sich zum Beispiel "Beschreibung", "Preis" oder "ProductPage" anbieten. Das heißt, wenn ich hingehe und entsprechend den Preis an der Stelle hinzufüge, dann müsste der SQL-Server bei einer entsprechenden Summierung nicht in die Daten der Tabelle selber hineingucken. Was Sie nicht tun sollten, Sie sollten nicht die "ID", also den Primary Key mit aufnehmen, wenn diese Tabelle einen Primary Key hat an der Stelle, weil schlicht und ergreifend, für jeden Non Clustered Index wird automatisch der Primary Key mit aufgenommen. Insofern, das brauchen wir an der Stelle nicht. So, jetzt habe ich es hier entsprechend hinzugefügt. Dann kann ich hier unten unter "Filter" die "Filter Expression" angeben. Zum Beispiel könnte ich sagen: "Preis", "100". Und kurz einmal schauen, ob die Spalte auch wirklich so heißt. Sie hatten es ja gerade gesehen, da ist sie. Und … … der Dialog abhandengekommen, da haben wir ihn wieder. Das heißt ich kann jetzt damit den Index soweit anlegen. Ich scripte das vorher, damit Sie einen Blick auf das T-SQL werfen können. Die schieben wir ein Stück herunter. Und Sie sehen dann hier: "CREATE UNIQUE NONCLUSTERED INDEX", den Namen, die Tabelle, die Spalten, die wir ausgewählt haben und genau in der Reihenfolge auch, das "Include", den Filter und eine ganze Reihe von Optionen, die noch zusätzlich gesetzt wurden, die beziehen sich größtenteils auf Einstellungen hier unter "Options". Hier kann ich dann eine ganze Reihe von Detailfestlegungen treffen. Interessant ist auch, ich kann hier unter "Storage" auch festlegen, wo mein Index angelegt werden soll. Das heißt, wenn ich die Datenbank so aufgebaut habe, dass ich ein extra "Filegroup" für die Indizes habe, bietet sich möglicherweise an, diese auszuwählen. Das hat er gerade nicht gemacht, ich lasse also das T-SQL noch einmal erzeugen und … ich bekomme im Wesentlichen fast das Gleiche, nur … hier hinten steht jetzt "ON [Indizes]", das ist der Name meiner Filegroup, während hier bei der ersten Erzeugung des T-SQLs nichts steht. Eine Alternative, Inidzies zu bearbeiten und anzulegen, liegt darin, in das Design der Tabelle zu gehen. Ich kann hier auf die Tabelle klicken, rechte Maustaste, "Design" und dann hier oben mir die entsprechende Schaltfläche heraussuchen und in diesem Dialog den Index hinzufügen. Ich kann bestimmen, welche Spalten in dem Index sein sollen. Ich kann entsprechend bestimmen, ob dieser Index eindeutig sein soll, aber ich habe keine Möglichkeit, hier festzulegen, welche Spalten inkludiert werden sollen. Also "Include" funktioniert nicht, "Included columns" funktioniert nicht und ich kann keinen Filter angeben. Das heißt, das ist so ein bisschen eine relativ eingeschränkte Möglichkeit hinter dem, was der Index oder Indizes generell können auf dem SQL-Server. Insofern nicht mein bevorzugter Weg, aber ich wollte ihn kurz der Vollständigkeit halber Ihnen natürlich nicht vorenthalten. So, dann hier wieder herausgehen. So, wie ich den Index anlege über die Oberfläche hier oder über den Designer oder über T-SQL. Wenn ich das gemacht habe, kann ich im Wesentlichen auf "OK" klicken oder in dem Fall natürlich das Skript ausführen. Und das dauert einen kleinen Moment, der Index wird angelegt. Und wenn das abgeschlossen ist, sollte hier unter "Indexes" genau dieser Index auch auftauchen. Einfache Geschichte an der Stelle. Und gleichzeitig kann ich natürlich, wenn ich möchte, den Index hier auch wieder löschen. Das heißt, ich könnte hingehen und sagen, ich möchte diesen entsprechend entfernen. Da ist die Frage natürlich, wie kann ich da das Skript erzeugen? Die Möglichkeit besteht hier oben, auf diese Schaltfläche zu klicken. Wenn ich dann hinunterschiebe, sehe ich "DROP INDEX", der Name, "ON" und dann der Name der Tabelle an der Stelle. Das heißt, wenn ich hier auf "OK" klicke, wird exakt dieses Skript ausgeführt und damit verschwindet der Index wieder aus der Tabelle. So, ein bisschen hochziehen. So und wenn ich jetzt hier – na, ist schon weg, brauche ich ja nicht nochmal aktualisieren. Wenn ich natürlich versuche, das Skript noch einmal auszuführen, dann gibt es natürlich ein Problem an der Stelle. So, das waren also die Non Clustered Indizes. Damit kann ich sie anlegen, damit kann ich sie wieder löschen.

SQL Server: Performance-Optimierung

Lernen Sie den Umgang mit Indizis und Tools, um die Leistungsfähigkiet Ihrer SQL Server Datenbank effektiv zu erhöhen.

3 Std. 20 min (32 Videos)
Derzeit sind keine Feedbacks vorhanden...
Hersteller:
Software:
Exklusiv für Abo-Kunden
Ihr(e) Trainer:
Erscheinungsdatum:04.05.2017
Laufzeit:3 Std. 20 min (32 Videos)

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!