2009-06-01 14 views

Antwort

8

Eine Abfrage, die nur einige Felder auswählt, kann vollständig auf einem Index ausgeführt werden. Zum Beispiel, wenn Sie einen Index auf (OrderId) haben diese Abfrage würde eine Tabellensuche erforderlich:

select Status from Orders where OrderId = 42 

Aber wenn Sie ein Composite-Index auf (OrderId, Status) hinzufügen, kann der Motor alle Informationen abrufen es von den Bedürfnissen Index.

Eine Sortierung für mehrere Spalten kann von einem zusammengesetzten Index profitieren. Zum Beispiel kann ein Index auf (Nachname, Vorname) würde diese Abfrage profitieren:

select * from Orders order by LastName, FirsName 

Manchmal haben Sie eine einzigartige constrant auf mehreren Säulen. Sagen Sie zum Beispiel, dass Sie die Bestellnummern jeden Tag neu starten. Dann ist OrderNumber nicht eindeutig, aber (OrderNumber, OrderDayOfYear) ist. Sie können dies mit einem eindeutigen zusammengesetzten Index erzwingen.

Ich bin sicher, es gibt viel mehr Anwendungen für einen zusammengesetzten Index, nur ein paar Beispiele auflisten.

+0

wo OrderId = 42 => keine Notwendigkeit von Composite, nur OrderId. Morevoer eine zusammengesetzte (Id, OrderId) wird nicht helfen, kann es nur für die Abfrage mit Id oder Id und OrderId verwendet werden. Ich bin kein DB-Experte, aber ich bin mir nicht sicher, ein zusammengesetzter Index (wenn nicht gruppiert) ist wirklich nützlich für eine Auswahl * –

+0

@Guillaume: bedeutete einen Index auf (OrderId, Status), in der Antwort bearbeitet. – Andomar

14

Zusammengesetzte Indizes sind nützlich, wenn Ihre SELECT-Abfragen diese Spalten häufig als Kriterien in Ihren WHERE-Klauseln verwenden. Es verbessert die Abrufgeschwindigkeit. Sie sollten sie vermeiden, wenn sie nicht notwendig sind.

Diese article bietet einige wirklich gute Informationen.

+1

+1 für den Artikel –

+0

+1 für die gute Referenz. Gibt es einen ähnlichen Artikel für Oracle? – hsalimi

Verwandte Themen