[SQL] Order by champs calculés

deus Messages postés 93 Statut Membre -  
shaiulud Messages postés 407 Statut Membre -
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

1 réponse

shaiulud Messages postés 407 Statut Membre 15
 
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