|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : février 2007 Messages : 286 ![]() |
Bonjour,
je souhaiterai savoir s'il existe quelque part un document ou bien des avis d'experts qui pourraient me dire ce qui dans un code SQL est susceptible d'être gourmand ou pas. J'utilise PL/SQL sur des très gros tables (+100 000 000 enr) mais n'ai pas accès ni la trace ni à la structure des tables (index...) donc je manipule un peu en aveugle. Et donc parfois ça rame fort. Quelques exemples Des fonctions de type SUBSTR ou TO_CHAR, ou des concaténations, soit dans le SELECT ou le WHERE ou des IN ou <> dans le WHERE... bref est ce qu'il y a des fonctions à proscrire car potentiellement trop gourmandes ? ou bien si c'est simplement la volumes de données et les jointures utilisées qui font que ça rame merci de vos avis Laurent |
|
|
00
|
|
|
#3 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 168 ![]() |
Bonjour lbar012001,
La question primordiale est de savoir si PL/SQL est capable de définir, de lui-même, l'index à utiliser, même si la requête utilise la table "physique". Autrement dit, si PL/SQL optimise le chemin d'accès aux données (index) à partir de la table "physique".
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : février 2007 Messages : 286 ![]() |
merci,
en fait je me suis rendu compte d'un truc qui change tout j'ai 2 champs A et B contenant chacun des codes de 2 caractères Si dans le where je mets du ça va vite Si je mets du ça marche vite aussi Par contre si je concatène, et j'ai souvent besoin de faire ça, en faisant du là ça rame complètement. |
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 168 ![]() |
Si tu te mets à la place de la machine, le job à effectuer à chaque enregistrement, pour tes 100.000.000 records, ce n'est pas réellement étonnant.
Tu es dans un forum Access... peut-être existe-t-il un forum PL/SQL. Néanmoins, si PL/SQL ressemble à SQL Server, une "vue" avec ces deux champs concaténés pourrait réduire, significativement, ton temps de traitement.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Inscription : février 2007 Messages : 286 ![]() |
En fait c'est la concaténation dans le WHERE qui fait tout ramer, dans le SELECT ou dans le GROUP BY, pas de souci.
Merci en tout cas. Laurent |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com