Optimisation of SQL code in query
Le
Robert
Hello
I tried to optimisate sql code, seems to work but if i use sql as shown
below i have no results; If i change the % in LIKE into * the query will take
up to 20 min to execute. AMS_HMT contains a lot of data. Thanks for your help.
SELECT A.NPTF,
A.NRUBR,
A.NSUFF,
A.DJOURNAL,
A.DOPER,
A.DVALEUR,
A.NEXT,
A.CMON,
A.MONTANT,
A.CSENS,
A.NECRITUR,
B.CPDC
FROM AMS_HMT A INNER JOIN qry_OptFut_MF_Loads_05 B ON ((A.NPTF = B.NPTF) AND
(A.NRUBR = B.Realized_Acct) AND
(A.NSUFF = B.Realized_AcctSfx) AND
(A.NEXT>B.NEXT))
WHERE ((A.CSERVICE LIKE '%') AND
(A.NPTF LIKE '%') AND
(A.NECRITUR LIKE '%'))
ORDER BY A.NPTF, A.NRUBR;
I tried to optimisate sql code, seems to work but if i use sql as shown
below i have no results; If i change the % in LIKE into * the query will take
up to 20 min to execute. AMS_HMT contains a lot of data. Thanks for your help.
SELECT A.NPTF,
A.NRUBR,
A.NSUFF,
A.DJOURNAL,
A.DOPER,
A.DVALEUR,
A.NEXT,
A.CMON,
A.MONTANT,
A.CSENS,
A.NECRITUR,
B.CPDC
FROM AMS_HMT A INNER JOIN qry_OptFut_MF_Loads_05 B ON ((A.NPTF = B.NPTF) AND
(A.NRUBR = B.Realized_Acct) AND
(A.NSUFF = B.Realized_AcctSfx) AND
(A.NEXT>B.NEXT))
WHERE ((A.CSERVICE LIKE '%') AND
(A.NPTF LIKE '%') AND
(A.NECRITUR LIKE '%'))
ORDER BY A.NPTF, A.NRUBR;

Poser une question


This is a *French* Access newsgroup ;-))
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
"Robert"
| Hello
| I tried to optimisate sql code, seems to work but if i use sql as shown
| below i have no results; If i change the % in LIKE into * the query will take
| up to 20 min to execute. AMS_HMT contains a lot of data. Thanks for your help.
|
| SELECT A.NPTF,
| A.NRUBR,
| A.NSUFF,
| A.DJOURNAL,
| A.DOPER,
| A.DVALEUR,
| A.NEXT,
| A.CMON,
| A.MONTANT,
| A.CSENS,
| A.NECRITUR,
| B.CPDC
| FROM AMS_HMT A INNER JOIN qry_OptFut_MF_Loads_05 B ON ((A.NPTF = B.NPTF) AND
| (A.NRUBR = B.Realized_Acct) AND
| (A.NSUFF = B.Realized_AcctSfx) AND
| (A.NEXT>B.NEXT))
| WHERE ((A.CSERVICE LIKE '%') AND
| (A.NPTF LIKE '%') AND
| (A.NECRITUR LIKE '%'))
| ORDER BY A.NPTF, A.NRUBR;
|
|
T'es un petit marrant toi :-))
Je mets 1 phrase en anglais et hop personne ne comprend ... et dire que tous
ces programmeurs font de l'angalis technique ... ou alors vous programmez en
français (mis à part WINDEV) ... Soit
:-)
J'essaie d'optimiser un code SQL dans une Query (requête en bon français).
Dans le code je fais appel à une table reliée (Oracle : AMS_HMT) qui contient
un grand nombre d'enregistrements (plusieurs millions). Le Hic c'est que ma
requête prends +- 20 min à s'exécuter, même en passant par les index oracle.
En fait dès que je touche au champ NPTF et que je mets * à la place de %
c'est parti pour une pause café. Mais sous Access je suis obligé de mettre *
à la place de %. Qn a t il une idée comment je pourrai augmenter la
performance de cette SQL.
Merci
"3stone" a écrit :
Robert a écrit :
Mon anglais étant trés moyen, c'est pour cela que je n'ai pas répondu, déja
que parfois il faut faire un effort pour interpréter la question pour pouvoir
comprendre alors si en plus il faut être multilingue.
La question que je me pose c'est pourquoi mettre Like '*' puisque cela revient
à considérer tout les enregistrements ?
En gros si tu pouvais expliquer ce que tu cherche à faire avec cette requête ?
En fait je veux passer par les index de la table oracle, on m'a dit qu'il
fallait appeler les champs de l'index 1 par 1 et dans l'ordre d'où le
mon index se compose de ces 3 champs
Bonne journée
"Michel__D" a écrit :
quelles, mais le problème est que veux-tu ramener comme enregistrement ?
car (A.NEXT>B.NEXT) te ramène tout les enregistrements de A (A.NEXT) qui
sont > à (B.NEXT) et ceci pour chaque enregistrement de B qui satisfait les
autres conditions de la jointure.
PS1:Tu as essayé sans le WHERE.
PS2:Ou alors plutot un truc de ce genre (à vérifier) :
WHERE ((A.CSERVICE IS NOT NULL) AND
(A.NPTF IS NOT NULL) AND
(A.NECRITUR IS NOT NULL))
Robert a écrit :