[SQL] Order by champs calculés

Fermé
deus Messages postés 93 Date d'inscription mercredi 20 novembre 2002 Statut Membre Dernière intervention 24 mai 2007 - 31 août 2005 à 11:27
shaiulud Messages postés 404 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 15 juillet 2014 - 31 août 2005 à 11:34
Salut à tous,

J’ai une requete SQL que je voudrais trier sur base d'1 champ qui est dérivé d’autres champs de cette même requête.
Ma question serait de savoir si mon champ dérivé sera calculé 2x (une fois pour le SELECT et une fois pour le ORDER BY) auquel cas il est probablement préférable de passer par une subquery.
Voilà mes 2 hypothèses (ma requete est ici un peu simplifiée mais c’est le principe)
Hypo 1 :
SELECT
data2.entity_nr,
data2.column_b,
data2.column_c,
data2.column_d,
data2.column_e,
data2.column_b-data2.column_c-data2.column_d+data2.column_d AS column_f,
FROM
data2
ORDER BY
data2.column_b-data2.column_c-data2.column_d+data2.column_d DESC --column f

Hypo 2 :
SELECT * FROM (
SELECT
data2.entity_nr,
data2.column_b,
data2.column_c,
data2.column_d,
data2.column_e,
data2.column_b-data2.column_c-data2.column_d+data2.column_d AS column_f,
FROM
data2
)derived
ORDER by derived.column_f DESC

Vous opteriez pour quelle solution ?

Merci

Nico
A voir également:

1 réponse

shaiulud Messages postés 404 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 15 juillet 2014 14
31 août 2005 à 11:34
Sql server gère mal les sous-requete (d'un point de vue des perfs) par rapport à d'autre base

mais tu peux regarder le plan d'exécution pour déterminer la meilleur implémentation (option dans le query analyser)
0