GNT sans publicité, site mobile, fonctionnalitées exclusives...

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;
Lire les 8 réponses

Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
3stone
Le #17257731
Hi Robert,

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;
|
|
Robert
Le #17259611
Salut 3stone

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 :

Hi Robert,

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;
|
|




Michel__D
Le #17261811
Bonjour,

Robert a écrit :
Salut 3stone

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




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.


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.




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 ?


"3stone" a écrit :

Hi Robert,

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;
|
|






Robert
Le #17262441
bonjour

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

>> | WHERE ((A.CSERVICE LIKE '%') AND
>> | (A.NPTF LIKE '%') AND
>> | (A.NECRITUR LIKE '%'))



mon index se compose de ces 3 champs

Bonne journée

"Michel__D" a écrit :

Bonjour,

Robert a écrit :
> Salut 3stone
>
> 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


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.


> 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.


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 ?


> "3stone" a écrit :
>
>> Hi Robert,
>>
>> 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;
>> |
>> |
>>
>>



Michel__D
Le #17262661
Hum, je ne comprend pas trop l'intérét de rajouter ces conditions telles
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 :
bonjour

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

| WHERE ((A.CSERVICE LIKE '%') AND
| (A.NPTF LIKE '%') AND
| (A.NECRITUR LIKE '%'))







mon index se compose de ces 3 champs

Bonne journée

"Michel__D" a écrit :

Bonjour,

Robert a écrit :
Salut 3stone

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



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.


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.



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 ?


"3stone" a écrit :

Hi Robert,

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;
|
|










Publicité
Suivre les réponses
Poster une réponse
Anonyme