Quand je regarde le plan d'exécution pour une requête SELECT, je remarque souvent les sortings lancés là-bas. Le problème est que je n'ai aucun ordre par dans ma requête, et il semble que la cause des sortings soit l'ordre croissant / décroissant défini pour la colonne sur l'index utilisé dans la requête.
Pourquoi cela arrive-t-il et peut-il être désactivé (et devrais-je le faire)?
Il existe plusieurs opérations dans SQL Server qui peuvent provoquer l'ajout d'un sorting au plan sans ORDER BY
dans la requête.
DISTINCT
et UNION
vont provoquer un sorting pour se débarrasser des duplicates.
GROUP BY
peut nécessiter un sort
dans la colonne GROUP BY
si le plan a un agrégat de stream plutôt qu'un agrégat de hachage et qu'aucun index approprié ne renvoie datatables requirejses pré-sortingées.
L'iterator de segment (utilisé pour les fonctions de classment) nécessite que son input soit sortingée sur la colonne de segment.
Avez-vous un exemple particulier?
Le résultat est sortingé en utilisant l'index automatiquement. Vous pouvez spécifier la clause order by by.
C'est le but d'un index, sortinger datatables afin de find quelques lignes rapidement.