Freitag, 4. Oktober 2013

SQL Server DDL Trigger – Nachverfolgung der Erstellung von Indizes

Eine durchdachte Indizierung ist ein wesentlicher Bestandteil einer optimierten SQL Server Lösung. Dazu habe ich auch schon öfter etwas geschrieben:

Hypothetischer Index im SQL Server, jetzt endlich auf Video festgehalten

Indizes? Haben wir doch schon längst! Lassen Sie uns nun bitte zu den echten Tuning Methoden kommen.

Wie messe ich eigentlich den Erfolg der Optimierung einer SQL Abfrage?

Und daher ist es auch nicht verwunderlich, dass man häufig eine Reihe von Indizes “ausprobiert” auf dem Weg zum optimalen Ausführungsplan für einen definierten Workload.

Doch am Ende eines Tages kommt dann leicht Katerstimmung auf, weil zwar die Workload deutlich optimiert wurden, nur haben wir gleich noch welche Indizes angelegt bzw. überarbeitet? Denn wir haben im SQL Server Management Studio unterhalb der Tabellen schön verteilt die Indizes liegen. Ein Überblick fehlt. Und eine Abfrage von sys.indexes bringt uns auch nur bedingt weiter.

Und nicht jeder hat eine third-Party Anwendung mit Repository, Deployment, Abgleich usw. auf dem Kundenrechner.

Hier ein kleiner Tipp aus meiner Praxis. Nutzt einfach einen DDL Trigger. Nun nicht gleich die Nase rümpfen. Trigger ist nicht gleich Trigger und ich meine keinen DML Trigger, welcher auf Änderungen in den eigentlich Daten anspringt, sondern einen Data Definition Trigger, welcher auf Schema Änderungen reagiert. Und ein Create, Alter oder Drop Index ist eine Änderung am Schema.

Anbei ein kleiner Cast, in dem ich die Vorgehensweise einmal demonstriere.