Rapidité : CASE WHEN ou Union
Bonjour
Je cherche à savoir ce qui est le plus rapide sous Oracle 9 :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
select nom,prenom,sum(poids) as score from
(
select nom,prenom,10 as poids from Ecv where nom = 'A'
union all
select nom,prenom,10 as poids from Ecv where nom LIKE 'A%'
union all
select nom,prenom,10 as poids from Ecv where nom LIKE '%A%'
union all
select nom,prenom,10 as poids from Ecv where prenom = 'A'
union all
select nom,prenom,10 as poids from Ecv where prenom LIKE 'A%'
union all
select nom,prenom,10 as poids from Ecv where prennom LIKE '%A%'
)
group by nom,prenom |
ou
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
select nom,prenom,sum(poids) as score from
(
select nom,prenom,CASE
WHEN nom = 'A' then 10
WHEN nom LIKE 'A%' then 10
WHEN nom LIKE '%A%' then 10
END as poids
from Ecv
union all
select nom,prenom,CASE
WHEN prenom = 'A' then 10
WHEN prenom LIKE 'A%' then 10
WHEN prenom LIKE '%A%' then 10
END as poids
from Ecv
)
group by nom,prenom |
Je sais bien que les resultat de calculs sont différents mais je les pondère dans ma requète normale.
Je n'arrive pas à voir de différence de temps d'execution au niveau de mon serveur bien que le plan d'execution semble privilegier le case when.