Un index non clusterisé garantit-il l'ordre des lignes?

9

J'ai un développeur qui voudrait, lors d'une instruction select sans ordre, que les lignes d'une table soient dans l'ordre où elles ont été insérées. Le développeur a suggéré de passer d'un index clusterisé à un index non clusterisé.

En changeant l'index de cluster à non-cluster, cela garantit-il l'ordre dans lequel les lignes apparaissent dans le tableau?

Cette question est surtout pour ma curiosité; Je vais suggérer d'utiliser une colonne d'identité à la place, mais cette demande m'a fait réfléchir. L'horodatage pourrait être utilisé, mais il est possible que des lignes puissent être insérées simultanément.

Merci d'avance pour votre aide.

630
la source

Réponses:

18

Absolument pas - sans ORDER BY, l'ordre des lignes n'est JAMAIS garanti.

Le plan d'exécution choisi PEUT aboutir à l'ordre souhaité, mais si c'est le cas, c'est par hasard.

Ordre de stockage vs Ordre des résultats Fil DBA.SE

George.Palacios
la source
6

Ce n'est pas vrai, mais supposez que c'était le cas. Si les lignes sont déjà ordonnées par l'index, le coût de la commande par serait très faible, il n'y a donc aucune raison de le laisser de côté.

Lennart
la source