Wie wechsle ich die Standard-Index für Primärschlüssel off Ich möchte nicht alle meine Tabellen indiziert (sortiert) werden, aber sie muss einen PrimärschlüsselPrimärschlüssel ohne defaul Index (sortiert) - SQL2005
Antwort
Sie können haben Definieren Sie einen Primärschlüsselindex als NONCLUSTERED
, um zu verhindern, dass die Tabellenzeilen gemäß dem Primärschlüssel sortiert werden. Sie können jedoch keinen Primärschlüssel ohne einen zugeordneten Index definieren.
Die Mittel, mit denen SQL Server primäre und eindeutige Schlüssel implementiert, sind, indem Sie einen Index für diese Spalten platzieren. Sie können also keinen Primärschlüssel (oder eine eindeutige Einschränkung) ohne einen Index haben.
Sie können SQL Server anweisen, einen Nonclustered-Index zu verwenden, um diese Indizes zu implementieren. Wenn für eine Tabelle nur Nonclustered-Indizes vorhanden sind (oder gar keine Indizes), haben Sie einen Heap. Es ist ziemlich selten, dass Sie das wirklich wollen.
Nur weil eine Tabelle, die einen Clustered-Index hat, dies in keiner Weise bedeutet, dass die Zeilen der Tabelle werden in der „Ordnung“ durch einen solchen Index definiert zurückgegeben werden - die Tatsache, dass die Zeilen sind in der Regel, dass zurückgegeben Ordnung ist eine Implementierungseigenschaft.
Und der eigentliche Code wäre:
CREATE TABLE T (
Column1 char(1) not null,
Column2 char(1) not null,
Column3 char(1) not null,
constraint PK_T PRIMARY KEY NONCLUSTERED (Column2,Column3)
)
Tische sind immer unsortiert - es gibt keine „Standard“, um für einen Tisch und der Optimierer kann wählen oder nicht, einen Index, wenn man verwenden, existiert.
In SQL Server ist ein Index effektiv die einzige Möglichkeit, einen Schlüssel zu implementieren. Sie haben die Wahl zwischen geclusterten oder nicht gruppierten Indizes - das ist alles.
Was bedeutet "Ich möchte nicht, dass alle meine Tabellen sortiert werden"? Wenn das bedeutet, dass die Zeilen in der Reihenfolge angezeigt werden sollen, in der sie eingegeben wurden, gibt es nur eine Möglichkeit, dies zu gewährleisten: Sie müssen ein Feld haben, in dem die Bestellung gespeichert ist (oder die Zeit, wenn Sie nicht viele Transaktionen haben) . Und in diesem Fall sollten Sie einen Clustered-Index für dieses Feld für die beste Leistung haben.
Sie könnten mit einer nicht gruppierten PK (wie der productId) UND einem geclusterten eindeutigen Index in Ihrem Feld autonumber_or_timestamp für maximale Leistung enden.
Aber das hängt wirklich von der Realität ab, die Sie versuchen zu modellieren, und Ihre Frage enthält zu wenig Information darüber. DB Design ist kein abstraktes Denken.
- 1. Transaktionsreplikation ohne Primärschlüssel (eindeutiger Index)
- 2. Realm-Index und Primärschlüssel
- 3. Wird 'Auswählen' immer nach Primärschlüssel sortiert?
- 4. Linq einfügen ohne Primärschlüssel
- 5. Lehre - Tabelle ohne Primärschlüssel
- 6. wie ohne Primärschlüssel
- 7. Dialekt für SQL2005
- 8. Konflikt erstellen Tabelle mit Index und Primärschlüssel
- 9. Ist ein Primärschlüssel automatisch ein Index?
- 10. Composite-Schlüssel VS Primärschlüssel + nicht eindeutigen Index
- 11. Über Index und Primärschlüssel in SQL?
- 12. Django - "ManyToMany" ohne Primärschlüssel (AutoField)
- 13. Fetch Kind ohne Primärschlüssel NHibernate
- 14. MYSQL: modifizieren Primärschlüssel ohne Abwurf
- 15. Django: Querying schreibgeschützt ohne Primärschlüssel
- 16. Erstellen Join-Tabelle ohne Primärschlüssel
- 17. Index + 1 bis mit Index ohne Index
- 18. Moving SQL2005 App zu SQL2008
- 19. SQL2000 zu SQL2005. Abfrage jetzt viel langsamer
- 20. JQuery sortiert eine Tabelle ohne das Plugin
- 21. Hive Tabelle sortiert, aber ohne Art
- 22. Wie Datenrahmen ohne Index
- 23. Anfügen neuen Pandas Datenrahmen auf einer alten ohne Spaltennamen sortiert
- 24. Unterschied zwischen Primärschlüssel und eindeutiger Index in SQL Server
- 25. SQL Server - Skript ohne Primärschlüssel generieren
- 26. .net mvc3 mysql Tabelle ohne Primärschlüssel
- 27. Beliebige Beziehung in Segeln js ohne Primärschlüssel
- 28. JPA-Entität für eine Tabelle ohne Primärschlüssel
- 29. Polymorphe Assoziation ohne Primärschlüssel in EF teilen
- 30. Wie werden zwei Arrays nach demselben Index sortiert?
Sie können einen Primärschlüssel ohne jeden Index definieren, aber nicht wirklich empfohlen –
@Mitch Wheat - Hmm ... Ich war mir dessen nicht bewusst. Können Sie eine Beispielanweisung posten, die eine PK-Einschränkung erstellt, aber nicht implizit auch einen Index erstellt? –
@Mitch Wheat - Ich bin ziemlich sicher, dass Sie nicht können. Mit den Indexstrukturen überprüft/pflegt SQL Server die Eindeutigkeitseigenschaft. –