Der UltraLite-Optimierer verwendet leistungsfähige Optimierungsstrategien für die Auswahl eines Indexes für die Abfrageoptimierung. Bei einfachen Abfragen kann nicht leicht vorab ermittelt werden, welchen Index der Optimierer verwendet, um die Abfrageperformance zu optimieren, oder ob überhaupt ein Index verwendet wird. Bei zunehmender Komplexität hängt die Auswahl des Indexes von den Klauseln ab, die für Ihre Abfrage erforderlich sind. Normalerweise kann das Vorhandensein einer FOR READ ONLY-Klausel bewirken, dass der Optimierer einen direkten Table-Scan anstatt eines Indexes auswählt, um eine bessere Abfrageperformance zu erzielen.
Beim Optimieren einer Abfrage überprüft der Optimierer anhand der Anforderungen der Abfrage, ob Indizes vorhanden sind, die zur Verbesserung der Performance verwendet werden können. Wenn die Performance nicht mithilfe eines Indexes verbessert werden kann, durchsucht der Optimierer keinen Index. Stattdessen wird eine temporäre Tabelle oder ein direkter Page-Scan verwendet. Aus diesem Grund müssen Sie möglicherweise mit den Indizes experimentieren und die generierten Ausführungspläne häufig überprüfen, um Folgendes sicherzustellen:
Sie verwalten nur Indizes, die vom Optimierer verwendet werden.
Sie minimieren die Anzahl der erstellten temporären Tabellen.
Bei komplexen Abfragen ist es noch schwieriger vorherzusehen, welcher Index verwendet wird. Wenn eine Abfrage z.B. ein WHERE-Prädikat sowie eine GROUP BY-Klausel zusätzlich zu einer ORDER BY-Klausel enthält, erfüllt ein einzelner Index möglicherweise nicht die Suchbedingungen der betreffenden Abfrage. Wenn Sie daher einen Index erstellt haben, um die Selektivitätsanforderungen des WHERE-Prädikats zu erfüllen, stellen Sie möglicherweise fest, dass der Optimierer ihn gar nicht verwendet. Stattdessen verwendet der Optimierer einen Index, der eine bessere Performance für die ORDER BY-Bedingungen bietet, da diese Klausel den größten Verarbeitungsaufwand hat.
Verwalten von temporären Tabellen
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |