Welche allgemeinen Regeln gelten für die Verwendung von zusammengesetzten Indizes? Wann sollten Sie sie verwenden und wann sollten Sie sie vermeiden?Wann sollten zusammengesetzte Indizes verwendet werden?
Antwort
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.
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 für den Artikel –
+1 für die gute Referenz. Gibt es einen ähnlichen Artikel für Oracle? – hsalimi
- 1. Wann sollten Speicherkarten verwendet werden?
- 2. Anwendungsdesign - Wann sollten Schnittstellen verwendet werden?
- 3. Wann sollten schwache Referenzen verwendet werden?
- 4. Wann sollten JavaScript-Template-Engines verwendet werden?
- 5. Wann sollten Klassen in C# verwendet werden?
- 6. Wann sollten Makrofunktionen in Erlang verwendet werden?
- 7. Wann sollten Pragmas auf SQLite verwendet werden?
- 8. Wie funktionieren zusammengesetzte Indizes?
- 9. Wann sollten Erweiterungsmethoden vermieden werden?
- 10. Wann sollten 1-zu-1-Beziehungen zwischen Datenbanktabellen verwendet werden?
- 11. Wann sollten BOOL und bool in C++ verwendet werden?
- 12. Wann sollten Singleton-Klassen in Ruby verwendet werden?
- 13. Wann asynchrone Operationen in Asio verwendet werden sollten
- 14. Wann sollten explizite Ausrichtungsrichtlinien in der Assembly verwendet werden?
- 15. Wann sollten <%# ... %> und <%= ... %> verwendet werden?
- 16. Wann sollten `DateTime.now.utc` und` Time.current.utc` in Rails verwendet werden?
- 17. Wann sollten Named Pipes in Windows verwendet werden?
- 18. Wann sollten mehrere Sprite-Batches in XNA verwendet werden?
- 19. Clojure Best Practice: Wann sollten Metadaten verwendet werden?
- 20. Wann sollten Seaside-Komponenten verwendet und wann einfache Renderobjekte verwendet werden?
- 21. Zusammengesetzte Indizes in Apache Cassandra
- 22. Wann sollte FOUNDATION_EXPORT verwendet werden?
- 23. Wann sollten Ganzzahlen explizit angegeben werden?
- 24. Wie werden reguläre und zusammengesetzte Indizes in RDBs implementiert?
- 25. Welche Textboxereignisse sollten verwendet werden
- 26. Wann Indizes zu Tabellen hinzugefügt werden?
- 27. Google App Engine-Datenspeicher nicht zusammengesetzte Indizes
- 28. Wann sollten die BDD-Testszenarien geschrieben werden?
- 29. Wann sollten keine benutzerdefinierten Ausnahmen erstellt werden?
- 30. Wann sollten Ereignisse in Silverlight ausgehängt werden?
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 * –
@Guillaume: bedeutete einen Index auf (OrderId, Status), in der Antwort bearbeitet. – Andomar