## Performance

Die Performance einer Datenbankinstanz hängt wesentlich von der Konfiguration der Datenbankinstanz, vom Datenbankdesign und von der Formulierung der einzelnen SQL-Anweisungen ab.

### Suchbedingungen

Suchbedingungen beschreiben den Suchbereich einer SQL-Anweisung. Suchbedingungen sind boolesche Ausdrücke (Terme), die mit AND oder OR verknüpft sein können. AND-Bedingungen verkleinern den Suchbereich, OR-Bedingungen vergrößern den Suchbereich.

SELECT firstname, name, zip FROM hotel.customer
WHERE (title ='Company') AND (name > 'Randolph')

Um eine Suchbedingung zu erfüllen, kann das Datenbanksystem immer die gesamte Tabelle durchsuchen (TABLE SCAN). Dies ist aber in den meisten Fällen nicht die effizienteste Methode. Je mehr Sie den Suchbereich einschränken können, desto schneller kann das Datenbanksystem die durch die Suchbedingung qualifizierten Datensätze finden.

Aus diesem Grund ist es auch immer vorteilhaft, wenn das Datenbanksystem über einen Tabellenbereich suchen kann, dessen Datensätze sortiert sind. Hierzu dienen die Schlüssel einer Tabelle. Jede Tabelle hat einen Primärschlüssel. Sie können zusätzlich Sekundärschlüssel (Indizes) definieren, die Sie über eine oder mehrere Spalten anlegen können.

Um SQL-Anweisungen möglichst schnell abzuarbeiten, verwendet das Datenbanksystem unter anderem die folgenden Vorgehensweisen:

● Es formt SQL-Anweisungen in die für die Suche am besten geeignete Form um.

Siehe Automatisches Umformen von SQL-Anweisungen

● Es berechnet die beste Suchstrategie für jede SQL-Anweisung.

Siehe SQL-Optimierer

Siehe auch:

Suchbedingungen, Suchstrategien

SQL-Referenzhandbuch, Suchbedingung (search_condition)

### Empfehlungen

● Um eine gute I/O-Performance zu erreichen, beachten Sie die Hinweise im Abschnitt Datenbankinstanz planen.

● Beachten Sie bei der Datendefinition die Tipps zum Datenbankdesign.

● Aktualisieren Sie regelmäßig die Statistiken des SQL-Optimierers, insbesondere nachdem viele Daten geändert wurden.

● Nehmen Sie nur möglichst selektive Spalten in Indizes auf (Spalten, die möglichst viele unterschiedliche Werte enthalten).

● Formulieren Sie möglichst selektive Suchbedingungen.

Formulieren Sie nur solche Suchbedingungen, die nicht von allen Zeilen erfüllt werden: Wenn z. B. die Benutzer die Werte einer Suchbedingung frei wählen können, geben sie häufig gar keine Werte ein. Das Datenbanksystem muss dann diese wirkungslose Suchbedingung für jede zu untersuchende Zeile auswerten. Besser ist es, verschiedene SELECT-Anweisungen in Abhängigkeit von einer Benutzereingabe durchzuführen.

● Stellen Sie die selektivsten Suchbedingungen an den Anfang der Suchbedingung. So kann das Datenbanksystem die Suche unter Umständen abbrechen, bevor es alle Suchbedingungen ausgewertet hat.

● Die Suchbedingung

columnx IN (1,13,24,...)

kann vom SQL-Optimierer besser ausgewertet werden als semantisch gleiche Suchbedingung

columnx=1 OR columnx=13 OR columnx=24 OR ...

Siehe auch:

Performance-Engpässe analysieren

Überwachung

Fehlersuche

SAP-Hinweis 819641