Was ist für einen Non-Clustered-Index erforderlich, obwohl die Tabelle einen Clustered-Index aufweist?SQL Server-Indizes
Antwort
Die "Notwendigkeit" besteht darin, schnellere Nachschlagevorgänge für Spalten durchzuführen, die nicht im Clustered-Index enthalten sind.
Für eine optimale Leistung müssen Sie für jede in Ihren Abfragen verwendete Kombination einen Index erstellen. Zum Beispiel, wenn Sie eine solche Auswahl haben.
SELECT *
FROM MyTable
WHERE Col_1 = @SomeValue AND
Col_2 = @SomeOtherValue
Dann sollten Sie einen Clustered-Index mit Col_1 und Col_2 tun. Auf der anderen Seite, wenn Sie eine zusätzliche Abfrage, die eine der Säule nach oben sieht nur aus wie:
SELECT *
FROM MyTable
WHERE Col_1 = @SomeValue
Dann sollten Sie einen Index nur mit dem col_1 haben. Sie haben also zwei Indizes. Eins mit Col_1 und Col_2 und ein anderes mit Col_1.
Erhalten Sie keine Clustered-Indizes, die mit Indizes mehrerer Spalten verwechselt werden. Das ist nicht dasselbe.
Here's ein Artikel, der einen guten Job der Erklärung von geclusterten vs. nicht gruppierten Indizes leistet.
In mssql-Server können Sie nur einen gruppierten Index pro Tabelle haben, und es ist fast immer der Primärschlüssel. Ein gruppierter Index wird an die Tabelle "angehängt", so dass er nicht in die Tabelle zurückkehren muss, um andere Datenelemente zu erhalten, die möglicherweise in der "select" -Klausel enthalten sind. Ein nicht gruppierter Index ist nicht angefügt, enthält jedoch einen Verweis auf die Tabellenzeile mit dem gesamten Rest der Daten.
- 1. SQL, Microsoft SQl
- 2. SQL: Hilfe mit SQL Joins
- 3. SQL zählt Leistung (SQL 2000)
- 4. rekursive SQL-Mathematik in SQL?
- 5. SQL Query/SQL Reporting Services
- 6. SQL-Abfrage für sql Lite
- 7. Dynamic SQL vs Static SQL
- 8. Transforming einfache SQL "access sql"
- 9. Headi sql: sql Fehler 1054
- 10. Statement.execute (sql) vs executeUpdate (sql) und executeQuery (sql)
- 11. SQL Server Fehler! (Microsoft SQL-Dmo Odbc SQL-Status 42000)
- 12. SQL ISNULL Zustand in Sql Pivot und Sql Fall
- 13. Übertragung von SQL-Jobs von SQL 2005 zu SQL 2008
- 14. SQL SQL-Spalte in SQL Management Studio einfach bearbeiten
- 15. SQL Server 2008 zu SQL Server 2005
- 16. T-SQL-Indexdienst SQL Openquery Optimierung
- 17. SQL zu Linq-to-SQL-Umwandlung
- 18. SQL Server - Dynamische PIVOT Tabelle - SQL Injection
- 19. PHP/SQL assign SQL-Ergebnis Sitzung
- 20. SQL-Abfrage, Wildcard, MS SQL Server 2005
- 21. SQL Server: Beenden von SQL aus ausgeführt
- 22. SQL vorgelegt schützen Daten von SQL-Injections
- 23. LINQ zu SQL OnLoaded() mit SQL View?
- 24. SQL: Kombinieren von zwei SQL-Abfragen
- 25. SQL: Verknüpfte Listen in SQL-Datenbank?
- 26. SQL-Tabellenvergleich mit CASE T SQL
- 27. SQL Server - T-SQL UNION ALLE + PIVOT
- 28. Google Zone überprüfen SQL-Abfrageebene SQL Server
- 29. SQL-Tabelle zu MDB (SQL 2005)
- 30. Get SQL nach Zend \ Db \ SQL \ Select
Keine Notwendigkeit für zwei Indizes in diesem Fall - genug, um Index für Col_1 und Col_2 zu haben. Derselbe Index wird auch effektiv für Lookup-Col_1-Werte verwendet. – Arvo