Gibt ein nicht gruppierter Index Garantien für die Zeilenreihenfolge?

9

Ich habe einen Entwickler, der möchte, dass bei einer select-Anweisung ohne Reihenfolge nach die Zeilen in einer Tabelle in der Reihenfolge angezeigt werden, in der sie eingefügt wurden. Der Entwickler schlug vor, von einem Clustered-Index zu einem Nicht-Clustered-Index zu wechseln.

Gibt dies durch Ändern des Index von "Clustered" in "Non-Clustered" Garantien für die Reihenfolge, in der Zeilen in der Tabelle angezeigt werden?

Diese Frage ist hauptsächlich für meine Neugier; Ich werde vorschlagen, stattdessen eine Identitätsspalte zu verwenden, aber diese Anfrage hat mich zum Nachdenken gebracht. Der Zeitstempel könnte verwendet werden, es besteht jedoch die Möglichkeit, dass Zeilen gleichzeitig eingefügt werden.

Vielen Dank im Voraus für Ihre Hilfe.

630
quelle

Antworten:

17

Absolut nicht - ohne ORDER BY ist die Zeilenreihenfolge NIE garantiert.

Der gewählte Ausführungsplan kann zu der gewünschten Reihenfolge führen, aber wenn ja, ist dies zufällig.

Speicherreihenfolge vs Ergebnisreihenfolge DBA.SE-Thread

George.Palacios
quelle
6

Nicht wahr, aber nehmen Sie an, dass es war. Wenn die Zeilen bereits nach Index sortiert sind, sind die Kosten für die Bestellung nach sehr niedrig, sodass es keinen Grund gibt, sie wegzulassen.

Lennart
quelle