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.
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:
Die gesamte Tabelle "Customers" anhand des Firmennamens durchsuchen, wobei jede Zeile dahingehend überprüft wird, ob die Kunden-ID größer als 300 ist.
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.
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.
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |