SQL Server 2008: Mit gefilterten Indexen die Performance verbessern

Nach diesem Einblick in die Funktionsweise nicht-geclusterter Indexe soll nun näher beleuchtet werden, wie man Filter einsetzen kann, wenn der nicht-geclusterte Index so definiert ist, dass er nur Datenteilmengen indexiert. Dazu muss zunächst der vorher erstellte Index entfernt werden.


Im folgenden Script wird ein gefilterter nicht-geclusterter Index im SaleDate-Feld erstellt. Dieser Index wird Datenpointer AUSSCHLIESSLICH für diejenigen Einträge enthalten, für die das SaleDate NICHT NULL ist. Das bedeutet, dass für alle Einträge, in denen das SaleDate NULL ist, der Index überhaupt nicht berücksichtigt wird.


In der folgenden Abfrage wird ein Indexscan des idx_SalesHistory_SalePrice mit 7 logischen Datenbanklesevorgängen verwendet. Somit erfordert die Operation dank des gefilterten Index trotz Durchführung eines Indexscans weniger logische Lesevorgänge.


Man kann die gleiche Systemtabellenabfrage wie vorher durchführen, um die Anzahl der im Index enthaltenen Einträge anzuzeigen. Der vorherige Index enthielt alle 15.000 Einträge aus der Tabelle, während der aktuelle Index nur Einträge enthält, in denen das SaleDate NICHT NULL ist (2142 Einträge).


In der folgenden Abfrage werden alle Einträge, in denen das SaleDate NULL ist, gesucht. Dabei ist zu bedenken, dass der vorher definierte Index nur die Einträge enthält, in denen das SaleDate NICHT NULL ist, weshalb er für diese Abfrage nicht berücksichtigt wird. Tatsächlich wird ein Scan eines geclusterten Index verwendet, um die Einträge zu finden, in denen das SaleDate NULL ist, was 79 logische Datenbanklesevorgänge ergibt.


Fazit

Die neue Funktion für gefilterte Indexe in SQL Server 2008 ist sehr praktisch. Mit ihr kann man Indexe ausschließlich für Teilmengen häufig genutzter Daten durchführen. Diese Indextypen sollten allerdings mit Vorsicht eingesetzt werden. In fast allen Fällen ist ein normaler nicht-geclusterter Index nützlicher als ein gefilterter Index. Nur wenn man die Datennutzungsmuster seiner Datenbank gut kennt, sollte man das Erstellen gefilterter Indexe erwägen.

Page: 1 2

ZDNet.de Redaktion

Recent Posts

MadMxShell: Hacker verbreiten neue Backdoor per Malvertising

Die Anzeigen richten sich an IT-Teams und Administratoren. Ziel ist der Zugriff auf IT-Systeme.

2 Tagen ago

April-Patches für Windows legen VPN-Verbindungen lahm

Betroffen sind Windows 10 und Windows 11. Laut Microsoft treten unter Umständen VPN-Verbindungsfehler auf. Eine…

2 Tagen ago

AMD steigert Umsatz und Gewinn im ersten Quartal

Server-CPUs und Server-GPUs legen deutlich zu. Das Gaming-Segment schwächelt indes.

2 Tagen ago

Google stopft schwerwiegende Sicherheitslöcher in Chrome 124

Zwei Use-after-free-Bugs stecken in Picture In Picture und der WebGPU-Implementierung Dawn. Betroffen sind Chrome für…

4 Tagen ago

Studie: 91 Prozent der Ransomware-Opfer zahlen Lösegeld

Die durchschnittliche Lösegeldzahlung liegt bei 2,5 Millionen Dollar. Acht Prozent der Befragten zählten 2023 mehr…

4 Tagen ago

DMA: EU stuft auch Apples iPadOS als Gatekeeper ein

Eine neue Analyse der EU-Kommission sieht vor allem eine hohe Verbreitung von iPadOS bei Business-Nutzern.…

4 Tagen ago