Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Pourquoi mon SQL Server ORDER BY est-il lent malgré l'indexation de la colonne ordonnée ?

Si votre requête ne contient pas de commande d'ici là, elle renverra les données dans l'ordre dans lequel elles ont été trouvées. Il n'y a aucune garantie que les données seront même renvoyées dans le même ordre lorsque vous exécuterez à nouveau la requête.

Lorsque vous incluez une clause order by, la base de données doit créer une liste des lignes dans le bon ordre, puis renvoyer les données dans cet ordre. Cela peut nécessiter beaucoup de traitement supplémentaire, ce qui se traduit par du temps supplémentaire.

Il faut probablement plus de temps pour trier un grand nombre de colonnes, que votre requête pourrait renvoyer. À un moment donné, vous manquerez d'espace tampon et la base de données devra commencer à échanger et les performances diminueront.

Essayez de renvoyer moins de colonnes (spécifiez les colonnes dont vous avez besoin au lieu de Sélectionner *) et voyez si la requête s'exécute plus rapidement.