Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Daten abfragen und ändern » Daten abfragen » Die ORDER BY-Klausel: Ergebnisse sortieren

 

Mit Indizes die Performance der ORDER BY-Klausel steigern

Manchmal gibt es für den SQL Anywhere-Datenbankserver nicht nur einen Weg, eine Abfrage mit einer ORDER BY-Klausel auszuführen. Mithilfe von Indizes können Sie den Datenbankserver in die Lage versetzen, die Tabellen effizienter zu durchsuchen.

Abfragen mit WHERE- und ORDER BY-Klauseln

Ein Beispiel für eine Abfrage, die auf mehrere Weisen ausgeführt werden kann, ist eine Abfrage, in der sowohl eine WHERE- als auch eine ORDER BY-Klausel enthalten ist.

SELECT *
   FROM Customers
   WHERE ID > 300
   ORDER BY CompanyName;

In diesem Fall muss SQL Anywhere zwischen zwei Vorgehensweisen entscheiden:

  1. Die gesamte Tabelle "Customers" anhand des Firmennamens durchsuchen, wobei jede Zeile dahingehend überprüft wird, ob die Kunden-ID größer als 300 ist.

  2. Den Schlüssel für die ID-Spalte verwenden, um nur die Firmen zu überprüfen, deren ID größer als 300 ist. Die Ergebnisse müssten dann nach Firmennamen sortiert werden.

Wenn es nur sehr wenige ID-Werte gibt, die größer als 300 sind, ist die zweite Strategie besser, da nur wenige Zeilen abgesucht werden, die rasch sortiert sind. Wenn die meisten ID-Werte größer als 300 sind, ist die erste Strategie vorzuziehen, da kein Sortieren notwendig ist.

Das Problem lösen

Sie können das Problem aus dem vorigen Beispiel lösen, indem Sie einen zweispaltigen Index für ID und "CompanyName" erstellen. SQL Anywhere kann dann diesen Index verwenden, um Zeilen in der richtigen Reihenfolge aus der Tabelle auszuwählen. Vergessen Sie allerdings nicht, dass Indizes Platz in der Datenbankdatei erfordern und Overhead verursachen, um auf dem letzten Stand gehalten zu werden. Daher sollten Sie Indizes nicht wahllos erstellen. Weitere Hinweise finden Sie unter Indizes verwenden.