Procédures stockées -> plus lentes ? [Oracle] - SQL/NoSQL - Programmation
Marsh Posté le 22-06-2004 à 09:44:59
Première chose, vérifie que les procédures tapent bien dans les bons indexes. Crées-en d'autres si nécessaire.
Idem pour la requête elle-même.
Sinon, personnellement, j'aime pas trop mettre des appels a des fonctions au niveau des lignes (donc dans le select) dans une requête qui retourne plusieurs lignes, surtout s'il y en a beaucoup. En effet, ça oblige Oracle à faire tourner la proc autant de fois qu'il y a de lignes, même si certains peuvent soutenir le contraire, je reste convaincu que dans ce cas, deux trois jointures de bourrins avec de jolies sous-requêtes et de beaux group by resteront plus performant. Il faudrait bencher pour s'en assurer mais bon.
Ceci-dit... Vérifie déjà tes indexs, parceque tu tapes dans une pauvre table à chaque fois, je trouve ça étrange que ca soit aussi lent... Et vu le nombre de lignes ca justifie pas vraiment...
PS: Tu peux forcer l'utilisation d'un index comme ça :
select |
Marsh Posté le 22-06-2004 à 10:50:37
effectivement je viens de passer de 6 secondes à 140 ms en rajoutant des index, c'est déjà mieux
merci
Marsh Posté le 21-06-2004 à 14:36:25
salut,
j'ai un problème de lenteur avec la requête suivante :
la requête dure 7 secondes pour 40 lignes retournées, ce qui me paraît plutôt énorme...
j'ai remarqué que ce qui prenait le plus de temps c'était les procédures stockées mais elles ont l'air classiques:
donc question : est-ce que l'utilisation des procédures stockées dans un select est à bannir ?
j'ai aussi remarqué que les tables ne disposaient que de très peu d'indexes et d'aucune clé étrangère, est-ce que le fait d'en mettre va accélérer la requête au point de lui faire gagner 6 secondes ?
merci d'avance.