Je dispose d'une vue qui contient une requête SQL de ce type :
Sur cette vue, on effectue une requête SELECT * FROM MaVue
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CREATE VIEW MaVue SELECT TOP 100 PERCENT Col1,Col2,Col3 FROM MaTable WHERE Col1 = MaValeur ORDER BY Col1,..
En SQL 2000, j’obtenais un résultat correct et trié. Par contre, depuis la migration en SQL 2005, le résultat n'est plus trié.
J'ai essayé différentes solutions pour tenter de résoudre ce problème :
- Utilisation de nom de colonne au lieu d'alias
- Utilisation de la clause WITH TIES
- Index forcé
Le tri ne s'effectue pas. Le plan d'exécution montre bien que la clause ORDER BY n'est pas exécutée.
Le résultat est correct si je fait SELECT * FROM MaVue ORDER BY ... ou si je transforme ma vue en procédure stockée.
Je ne comprends pas pourquoi l'ORDER BY n'est pas exécuté bien que cette clause est indiquée dans la vue.
Pour information, il s'agit d'un serveur SQL 2005 64 Bits en SP2 avec 16 GB de mémoire et 8 CPU.
Avez-vous une idée ?
D'avance, merci.
Partager