UNION ALL et ordre des résultats...

UNION ALL et ordre des résultats... - SQL/NoSQL - Programmation

Marsh Posté le 30-06-2004 à 11:46:44    

J'ai remarqué que lorsqu'on utilise pas de clause "ORDER BY" ou "GROUP BY", le SGBD retourne systématiquement les lignes dans l'ordre des UNION ALL.
 
Est-ce que c'est vraiment systématique, ou si dans certains cas cette règle peut ne pas être vérifiée ?
 
Par exemple.
 
Mettons une table de traduction de noms de produits. L'anglais est systématiquement rempli, mais le français pas toujours. Pour retrouver le libellé à afficher à un client Français, ma requête actuelle est donc :
 
select 1, nompro from prm where codpro = '1A00473' and codlan = 'FRA'
union all
select 2, nompro from prm where codpro = '1A00473' and codlan = 'ENG'
order by 1
 
=> Je n'ai qu'à récupérer la première ligne afin d'obtenir le "nompro" a afficher pour le client français.
 
Mais je voudrais savoir si je suis certain de retourner le même résultat en faisant ça :
 
select nompro from prm where codpro = '1A00473' and codlan = 'FRA'
union all
select nompro from prm where codpro = '1A00473' and codlan = 'ENG'
 
En effet, ce type de requêtes, je risque d'en éxécuter une bonne cinquantaines sur certaines page, et étant donné qu'il y a un grand nombre d'autres requêtes plutôt complexes derrière, je cherche à grapiller la moindre ms. Hors, il est connu que la clause "order by" est source de ralentissement des requêtes, donc si je pouvais la gicler sans risque...


Message édité par Arjuna le 30-06-2004 à 11:47:19
Reply

Marsh Posté le 30-06-2004 à 11:46:44   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed