Bonjour,
J'ai un problème d'optimisation lors d'une requête : Oracle ne choisit pas la meilleure solution pour joindre mes tables.
Admettons la requête suivante pour simplifier :
Ma fonction tordue est comme son nom l'indique : tordue donc lente.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 select * from TAB1, TAB2 where TAB1.nom=TAB2.nom and fonction_tordue(TAB1.nom,TAB2.nom)>0.50
Le problème que plutot de commencer par faire l'égalité sur le nom pour réduire le nombre de ligne et donc le nombre d'utilisation de cette fonction, il commence par fonction_tordue(TAB1.nom,TAB2.nom)>0.50.
J'ai regardé le hint ORDERED_PREDICATES mais il s'utilise juste pour spécifier l'ordre des filtres (nom='DUPONT' ou REVENU > 600), il n'a pas d'impact sur les jointures (n° client = n° client...).
Auriez vous un conseil pour retravailler la requêtes ou le cas échéant un hint ?
Je me demande si procéder de la sorte a un impact (j'essaierai demain) :
Merci d'avance pour vos conseils.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 select * from TAB1, TAB2 where (TAB1.nom=TAB2.nom and (fonction_tordue(TAB1.nom,TAB2.nom)>0.50))
Partager