Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Aide pour optimiser une requête

8 réponses
Avatar
La Mouette
Bonjour!

J'ai créé une requête, mais elle me prend énormément de temps à ouvrir, je
me demandais si vous aviez des idées pour l'optimiser? Ma table "Cheque" est
indexer à quelques endroits déjà et c'est une table très grosse, avec 32 000
enregistrements.

Voici ma requête:

SELECT Cheque.idCheque, Cheque.percepteur
FROM Cheque
WHERE (((Cheque.idCheque) Not In (SELECT c1.idCheque
FROM Cheque AS c1, Cheque AS c2
WHERE (((c1.refNSF)=[c2].[idCheque]) AND ((c2.percepteur)="HN_Frais"))))
AND((Cheque.percepteur)<>"Fiducie"));

C'est le SELECT dans le Not In qui ralenti tout.

J'ai essayer d'une autre manière aussi, mais c'est tout aussi lent:

SELECT c1.idCheque, c1.percepteur
FROM Cheque AS c1, Cheque AS c2
WHERE (((c1.refNSF)<>[c2].[idCheque]) AND ((c2.percepteur)<>"HN_Frais")
AND((Cheque.percepteur)<>"Fiducie"));

(J'ai simplifier la requête une peu pour le besoin de la cause)

Merci de votre précieuse aide

8 réponses

Avatar
Philippe T [MS]
Bonjour,

Votre requete actuelle (sans les parenthèse) est :

SELECT Cheque.idCheque, Cheque.percepteur
FROM Cheque
WHERE Cheque.percepteur <> "Fiducie"
AND Cheque.idCheque NOT IN
(SELECT c1.idCheque
FROM Cheque AS c1
INNER JOIN Cheque AS c2 ON c1.refNSFÂ.idCheque
WHERE c2.percepteur="HN_Frais");

Pouvez-vous tester la requête suivant (déja en terme de résultat car sans
données ce n'est pas simple) ?

SELECT Cheque.idCheque, Cheque.percepteur
FROM Cheque
WHERE Cheque.percepteur <> "Fiducie"
AND Cheque.refNSF NOT IN
(SELECT c2.idCheque FROM Cheque AS c2 WHERE
c2.percepteur="HN_Frais");


Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"La Mouette" wrote in message
news:
Bonjour!

J'ai créé une requête, mais elle me prend énormément de temps à ouvrir, je
me demandais si vous aviez des idées pour l'optimiser? Ma table "Cheque"
est

indexer à quelques endroits déjà et c'est une table très grosse, avec 32
000

enregistrements.

Voici ma requête:

SELECT Cheque.idCheque, Cheque.percepteur
FROM Cheque
WHERE (((Cheque.idCheque) Not In (SELECT c1.idCheque
FROM Cheque AS c1, Cheque AS c2
WHERE (((c1.refNSF)=[c2].[idCheque]) AND ((c2.percepteur)="HN_Frais"))))
AND((Cheque.percepteur)<>"Fiducie"));

C'est le SELECT dans le Not In qui ralenti tout.

J'ai essayer d'une autre manière aussi, mais c'est tout aussi lent:

SELECT c1.idCheque, c1.percepteur
FROM Cheque AS c1, Cheque AS c2
WHERE (((c1.refNSF)<>[c2].[idCheque]) AND ((c2.percepteur)<>"HN_Frais")
AND((Cheque.percepteur)<>"Fiducie"));

(J'ai simplifier la requête une peu pour le besoin de la cause)

Merci de votre précieuse aide





Avatar
La Mouette
Bonjour Philippe,

Merci pour ta réponse. J'ai essayé, ca donne les bonnes données, sauf que
c'est encore très lent! :(




Bonjour,

Votre requete actuelle (sans les parenthèse) est :

SELECT Cheque.idCheque, Cheque.percepteur
FROM Cheque
WHERE Cheque.percepteur <> "Fiducie"
AND Cheque.idCheque NOT IN
(SELECT c1.idCheque
FROM Cheque AS c1
INNER JOIN Cheque AS c2 ON c1.refNSFÂ.idCheque
WHERE c2.percepteur="HN_Frais");

Pouvez-vous tester la requête suivant (déja en terme de résultat car sans
données ce n'est pas simple) ?

SELECT Cheque.idCheque, Cheque.percepteur
FROM Cheque
WHERE Cheque.percepteur <> "Fiducie"
AND Cheque.refNSF NOT IN
(SELECT c2.idCheque FROM Cheque AS c2 WHERE
c2.percepteur="HN_Frais");


Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"La Mouette" wrote in message
news:
Bonjour!

J'ai créé une requête, mais elle me prend énormément de temps à ouvrir, je
me demandais si vous aviez des idées pour l'optimiser? Ma table "Cheque"
est

indexer à quelques endroits déjà et c'est une table très grosse, avec 32
000

enregistrements.

Voici ma requête:

SELECT Cheque.idCheque, Cheque.percepteur
FROM Cheque
WHERE (((Cheque.idCheque) Not In (SELECT c1.idCheque
FROM Cheque AS c1, Cheque AS c2
WHERE (((c1.refNSF)=[c2].[idCheque]) AND ((c2.percepteur)="HN_Frais"))))
AND((Cheque.percepteur)<>"Fiducie"));

C'est le SELECT dans le Not In qui ralenti tout.

J'ai essayer d'une autre manière aussi, mais c'est tout aussi lent:

SELECT c1.idCheque, c1.percepteur
FROM Cheque AS c1, Cheque AS c2
WHERE (((c1.refNSF)<>[c2].[idCheque]) AND ((c2.percepteur)<>"HN_Frais")
AND((Cheque.percepteur)<>"Fiducie"));

(J'ai simplifier la requête une peu pour le besoin de la cause)

Merci de votre précieuse aide










Avatar
La Mouette
Le plus rapide que j'ai réussi à faire... ca prend 30 secondes... :S Et
c'est comme ca:

SELECT Cheque.idCheque, Cheque.percepteur
FROM Cheque
WHERE Cheque.percepteur<>"Fiducie" AND Cheque.refNSF NOT IN(SELECT
c2.idCheque FROM Requête2 AS c2)
ORDER BY Cheque.idGroupe, Cheque.idDossier;

Et dans Requête2 j'ai mis percepteur="HN_Frais"

Il faut aussi que à la fin, mes données soit éditables... d'où vient le plus
gros du problème...! Sinon je pourrais essayer de d'autres manières!

Merci



Bonjour,

Votre requete actuelle (sans les parenthèse) est :

SELECT Cheque.idCheque, Cheque.percepteur
FROM Cheque
WHERE Cheque.percepteur <> "Fiducie"
AND Cheque.idCheque NOT IN
(SELECT c1.idCheque
FROM Cheque AS c1
INNER JOIN Cheque AS c2 ON c1.refNSFÂ.idCheque
WHERE c2.percepteur="HN_Frais");

Pouvez-vous tester la requête suivant (déja en terme de résultat car sans
données ce n'est pas simple) ?

SELECT Cheque.idCheque, Cheque.percepteur
FROM Cheque
WHERE Cheque.percepteur <> "Fiducie"
AND Cheque.refNSF NOT IN
(SELECT c2.idCheque FROM Cheque AS c2 WHERE
c2.percepteur="HN_Frais");


Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"La Mouette" wrote in message
news:
Bonjour!

J'ai créé une requête, mais elle me prend énormément de temps à ouvrir, je
me demandais si vous aviez des idées pour l'optimiser? Ma table "Cheque"
est

indexer à quelques endroits déjà et c'est une table très grosse, avec 32
000

enregistrements.

Voici ma requête:

SELECT Cheque.idCheque, Cheque.percepteur
FROM Cheque
WHERE (((Cheque.idCheque) Not In (SELECT c1.idCheque
FROM Cheque AS c1, Cheque AS c2
WHERE (((c1.refNSF)=[c2].[idCheque]) AND ((c2.percepteur)="HN_Frais"))))
AND((Cheque.percepteur)<>"Fiducie"));

C'est le SELECT dans le Not In qui ralenti tout.

J'ai essayer d'une autre manière aussi, mais c'est tout aussi lent:

SELECT c1.idCheque, c1.percepteur
FROM Cheque AS c1, Cheque AS c2
WHERE (((c1.refNSF)<>[c2].[idCheque]) AND ((c2.percepteur)<>"HN_Frais")
AND((Cheque.percepteur)<>"Fiducie"));

(J'ai simplifier la requête une peu pour le besoin de la cause)

Merci de votre précieuse aide










Avatar
Philippe T [MS]
Bonjour,

Ou sont les indexes ???

Voici les trois colonnes qu'il faut indexer (séparément)
percepteur
idCheque
refNSF

Je ne vois pas d'autres solutions, désolé :-(

Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"La Mouette" wrote in message
news:
Bonjour Philippe,

Merci pour ta réponse. J'ai essayé, ca donne les bonnes données, sauf que
c'est encore très lent! :(




Bonjour,

Votre requete actuelle (sans les parenthèse) est :

SELECT Cheque.idCheque, Cheque.percepteur
FROM Cheque
WHERE Cheque.percepteur <> "Fiducie"
AND Cheque.idCheque NOT IN
(SELECT c1.idCheque
FROM Cheque AS c1
INNER JOIN Cheque AS c2 ON c1.refNSFÂ.idCheque
WHERE c2.percepteur="HN_Frais");

Pouvez-vous tester la requête suivant (déja en terme de résultat car
sans


données ce n'est pas simple) ?

SELECT Cheque.idCheque, Cheque.percepteur
FROM Cheque
WHERE Cheque.percepteur <> "Fiducie"
AND Cheque.refNSF NOT IN
(SELECT c2.idCheque FROM Cheque AS c2 WHERE
c2.percepteur="HN_Frais");


Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"La Mouette" wrote in message
news:
Bonjour!

J'ai créé une requête, mais elle me prend énormément de temps à
ouvrir, je



me demandais si vous aviez des idées pour l'optimiser? Ma table
"Cheque"



est
indexer à quelques endroits déjà et c'est une table très grosse, avec
32



000
enregistrements.

Voici ma requête:

SELECT Cheque.idCheque, Cheque.percepteur
FROM Cheque
WHERE (((Cheque.idCheque) Not In (SELECT c1.idCheque
FROM Cheque AS c1, Cheque AS c2
WHERE (((c1.refNSF)=[c2].[idCheque]) AND
((c2.percepteur)="HN_Frais"))))



AND((Cheque.percepteur)<>"Fiducie"));

C'est le SELECT dans le Not In qui ralenti tout.

J'ai essayer d'une autre manière aussi, mais c'est tout aussi lent:

SELECT c1.idCheque, c1.percepteur
FROM Cheque AS c1, Cheque AS c2
WHERE (((c1.refNSF)<>[c2].[idCheque]) AND
((c2.percepteur)<>"HN_Frais")



AND((Cheque.percepteur)<>"Fiducie"));

(J'ai simplifier la requête une peu pour le besoin de la cause)

Merci de votre précieuse aide












Avatar
La Mouette
Salut,

Je n'avais pas indexer "percepteur" parce que sur les milliers
d'enregistrement c'est toujours les 3 mêmes choix. Mais même en le mettant en
index, les performances n'augmentent pas ! :( Merci de m'avoir aidé quand
même, c'est déjà un peu mieux! Mais encore intolérable! ;)

Quelqu'un d'autre aurait une idée s'il vous plait!?!?

Merci


Bonjour,

Ou sont les indexes ???

Voici les trois colonnes qu'il faut indexer (séparément)
percepteur
idCheque
refNSF

Je ne vois pas d'autres solutions, désolé :-(

Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"La Mouette" wrote in message
news:
Bonjour Philippe,

Merci pour ta réponse. J'ai essayé, ca donne les bonnes données, sauf que
c'est encore très lent! :(




Bonjour,

Votre requete actuelle (sans les parenthèse) est :

SELECT Cheque.idCheque, Cheque.percepteur
FROM Cheque
WHERE Cheque.percepteur <> "Fiducie"
AND Cheque.idCheque NOT IN
(SELECT c1.idCheque
FROM Cheque AS c1
INNER JOIN Cheque AS c2 ON c1.refNSFÂ.idCheque
WHERE c2.percepteur="HN_Frais");

Pouvez-vous tester la requête suivant (déja en terme de résultat car
sans


données ce n'est pas simple) ?

SELECT Cheque.idCheque, Cheque.percepteur
FROM Cheque
WHERE Cheque.percepteur <> "Fiducie"
AND Cheque.refNSF NOT IN
(SELECT c2.idCheque FROM Cheque AS c2 WHERE
c2.percepteur="HN_Frais");


Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"La Mouette" wrote in message
news:
Bonjour!

J'ai créé une requête, mais elle me prend énormément de temps à
ouvrir, je



me demandais si vous aviez des idées pour l'optimiser? Ma table
"Cheque"



est
indexer à quelques endroits déjà et c'est une table très grosse, avec
32



000
enregistrements.

Voici ma requête:

SELECT Cheque.idCheque, Cheque.percepteur
FROM Cheque
WHERE (((Cheque.idCheque) Not In (SELECT c1.idCheque
FROM Cheque AS c1, Cheque AS c2
WHERE (((c1.refNSF)=[c2].[idCheque]) AND
((c2.percepteur)="HN_Frais"))))



AND((Cheque.percepteur)<>"Fiducie"));

C'est le SELECT dans le Not In qui ralenti tout.

J'ai essayer d'une autre manière aussi, mais c'est tout aussi lent:

SELECT c1.idCheque, c1.percepteur
FROM Cheque AS c1, Cheque AS c2
WHERE (((c1.refNSF)<>[c2].[idCheque]) AND
((c2.percepteur)<>"HN_Frais")



AND((Cheque.percepteur)<>"Fiducie"));

(J'ai simplifier la requête une peu pour le besoin de la cause)

Merci de votre précieuse aide

















Avatar
Philippe T [MS]
Bonjour,

Une autre piste c'est de déplacer tes tables de données dans un projet
Access utilisant le molteur MSDE de SQL Server et non Jet.
Les performances n'ont généralement rien à voir mais c'est un peu de travail
!!! :-(

Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"La Mouette" wrote in message
news:
Salut,

Je n'avais pas indexer "percepteur" parce que sur les milliers
d'enregistrement c'est toujours les 3 mêmes choix. Mais même en le mettant
en

index, les performances n'augmentent pas ! :( Merci de m'avoir aidé quand
même, c'est déjà un peu mieux! Mais encore intolérable! ;)

Quelqu'un d'autre aurait une idée s'il vous plait!?!?

Merci


Bonjour,

Ou sont les indexes ???

Voici les trois colonnes qu'il faut indexer (séparément)
percepteur
idCheque
refNSF

Je ne vois pas d'autres solutions, désolé :-(

Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"La Mouette" wrote in message
news:
Bonjour Philippe,

Merci pour ta réponse. J'ai essayé, ca donne les bonnes données, sauf
que



c'est encore très lent! :(




Bonjour,

Votre requete actuelle (sans les parenthèse) est :

SELECT Cheque.idCheque, Cheque.percepteur
FROM Cheque
WHERE Cheque.percepteur <> "Fiducie"
AND Cheque.idCheque NOT IN
(SELECT c1.idCheque
FROM Cheque AS c1
INNER JOIN Cheque AS c2 ON c1.refNSFÂ.idCheque
WHERE c2.percepteur="HN_Frais");

Pouvez-vous tester la requête suivant (déja en terme de résultat car
sans


données ce n'est pas simple) ?

SELECT Cheque.idCheque, Cheque.percepteur
FROM Cheque
WHERE Cheque.percepteur <> "Fiducie"
AND Cheque.refNSF NOT IN
(SELECT c2.idCheque FROM Cheque AS c2 WHERE
c2.percepteur="HN_Frais");


Phil.
________________________________________________________
Philippe TROTIN
http://blogs.msdn.com/ptrotin




Microsoft Services France http://www.microsoft.com/france

"La Mouette" wrote in message
news:
Bonjour!

J'ai créé une requête, mais elle me prend énormément de temps à
ouvrir, je



me demandais si vous aviez des idées pour l'optimiser? Ma table
"Cheque"



est
indexer à quelques endroits déjà et c'est une table très grosse,
avec





32
000
enregistrements.

Voici ma requête:

SELECT Cheque.idCheque, Cheque.percepteur
FROM Cheque
WHERE (((Cheque.idCheque) Not In (SELECT c1.idCheque
FROM Cheque AS c1, Cheque AS c2
WHERE (((c1.refNSF)=[c2].[idCheque]) AND
((c2.percepteur)="HN_Frais"))))



AND((Cheque.percepteur)<>"Fiducie"));

C'est le SELECT dans le Not In qui ralenti tout.

J'ai essayer d'une autre manière aussi, mais c'est tout aussi
lent:






SELECT c1.idCheque, c1.percepteur
FROM Cheque AS c1, Cheque AS c2
WHERE (((c1.refNSF)<>[c2].[idCheque]) AND
((c2.percepteur)<>"HN_Frais")



AND((Cheque.percepteur)<>"Fiducie"));

(J'ai simplifier la requête une peu pour le besoin de la cause)

Merci de votre précieuse aide



















Avatar
Raymond [mvp]
Bonjour.

as-tu essayé de remplacer le select du not in qui n'est jamais performant
par une requête initiale enregistrée et ensuite de baser ta requête finale
sur une relation entre la table Cheque avec la requête enregistrée ? sans
oublier que tu travailles toujours sur la même table ce qui retarde aussi
les travaux.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"La Mouette" a écrit dans le message
de news:
Salut,

Je n'avais pas indexer "percepteur" parce que sur les milliers
d'enregistrement c'est toujours les 3 mêmes choix. Mais même en le mettant
en
index, les performances n'augmentent pas ! :( Merci de m'avoir aidé quand
même, c'est déjà un peu mieux! Mais encore intolérable! ;)

Quelqu'un d'autre aurait une idée s'il vous plait!?!?

Merci


Bonjour,

Ou sont les indexes ???

Voici les trois colonnes qu'il faut indexer (séparément)
percepteur
idCheque
refNSF

Je ne vois pas d'autres solutions, désolé :-(

Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"La Mouette" wrote in message
news:
Bonjour Philippe,

Merci pour ta réponse. J'ai essayé, ca donne les bonnes données, sauf
que
c'est encore très lent! :(




Bonjour,

Votre requete actuelle (sans les parenthèse) est :

SELECT Cheque.idCheque, Cheque.percepteur
FROM Cheque
WHERE Cheque.percepteur <> "Fiducie"
AND Cheque.idCheque NOT IN
(SELECT c1.idCheque
FROM Cheque AS c1
INNER JOIN Cheque AS c2 ON c1.refNSFÂ.idCheque
WHERE c2.percepteur="HN_Frais");

Pouvez-vous tester la requête suivant (déja en terme de résultat car
sans


données ce n'est pas simple) ?

SELECT Cheque.idCheque, Cheque.percepteur
FROM Cheque
WHERE Cheque.percepteur <> "Fiducie"
AND Cheque.refNSF NOT IN
(SELECT c2.idCheque FROM Cheque AS c2 WHERE
c2.percepteur="HN_Frais");


Phil.
________________________________________________________
Philippe TROTIN
http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"La Mouette" wrote in message
news:
Bonjour!

J'ai créé une requête, mais elle me prend énormément de temps à
ouvrir, je



me demandais si vous aviez des idées pour l'optimiser? Ma table
"Cheque"



est
indexer à quelques endroits déjà et c'est une table très grosse,
avec
32



000
enregistrements.

Voici ma requête:

SELECT Cheque.idCheque, Cheque.percepteur
FROM Cheque
WHERE (((Cheque.idCheque) Not In (SELECT c1.idCheque
FROM Cheque AS c1, Cheque AS c2
WHERE (((c1.refNSF)=[c2].[idCheque]) AND
((c2.percepteur)="HN_Frais"))))



AND((Cheque.percepteur)<>"Fiducie"));

C'est le SELECT dans le Not In qui ralenti tout.

J'ai essayer d'une autre manière aussi, mais c'est tout aussi lent:

SELECT c1.idCheque, c1.percepteur
FROM Cheque AS c1, Cheque AS c2
WHERE (((c1.refNSF)<>[c2].[idCheque]) AND
((c2.percepteur)<>"HN_Frais")



AND((Cheque.percepteur)<>"Fiducie"));

(J'ai simplifier la requête une peu pour le besoin de la cause)

Merci de votre précieuse aide



















Avatar
La Mouette
Bonjour Raymond!

Si je fais comme tu me proposes, le résultat de la requête n'est plus
éditable, c'était avec le NOT IN le seul moyen que j'avais réussi à le faire
éditable..!

Merci


Bonjour.

as-tu essayé de remplacer le select du not in qui n'est jamais performant
par une requête initiale enregistrée et ensuite de baser ta requête finale
sur une relation entre la table Cheque avec la requête enregistrée ? sans
oublier que tu travailles toujours sur la même table ce qui retarde aussi
les travaux.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"La Mouette" a écrit dans le message
de news:
Salut,

Je n'avais pas indexer "percepteur" parce que sur les milliers
d'enregistrement c'est toujours les 3 mêmes choix. Mais même en le mettant
en
index, les performances n'augmentent pas ! :( Merci de m'avoir aidé quand
même, c'est déjà un peu mieux! Mais encore intolérable! ;)

Quelqu'un d'autre aurait une idée s'il vous plait!?!?

Merci


Bonjour,

Ou sont les indexes ???

Voici les trois colonnes qu'il faut indexer (séparément)
percepteur
idCheque
refNSF

Je ne vois pas d'autres solutions, désolé :-(

Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"La Mouette" wrote in message
news:
Bonjour Philippe,

Merci pour ta réponse. J'ai essayé, ca donne les bonnes données, sauf
que
c'est encore très lent! :(




Bonjour,

Votre requete actuelle (sans les parenthèse) est :

SELECT Cheque.idCheque, Cheque.percepteur
FROM Cheque
WHERE Cheque.percepteur <> "Fiducie"
AND Cheque.idCheque NOT IN
(SELECT c1.idCheque
FROM Cheque AS c1
INNER JOIN Cheque AS c2 ON c1.refNSFÂ.idCheque
WHERE c2.percepteur="HN_Frais");

Pouvez-vous tester la requête suivant (déja en terme de résultat car
sans


données ce n'est pas simple) ?

SELECT Cheque.idCheque, Cheque.percepteur
FROM Cheque
WHERE Cheque.percepteur <> "Fiducie"
AND Cheque.refNSF NOT IN
(SELECT c2.idCheque FROM Cheque AS c2 WHERE
c2.percepteur="HN_Frais");


Phil.
________________________________________________________
Philippe TROTIN
http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"La Mouette" wrote in message
news:
Bonjour!

J'ai créé une requête, mais elle me prend énormément de temps à
ouvrir, je



me demandais si vous aviez des idées pour l'optimiser? Ma table
"Cheque"



est
indexer à quelques endroits déjà et c'est une table très grosse,
avec
32



000
enregistrements.

Voici ma requête:

SELECT Cheque.idCheque, Cheque.percepteur
FROM Cheque
WHERE (((Cheque.idCheque) Not In (SELECT c1.idCheque
FROM Cheque AS c1, Cheque AS c2
WHERE (((c1.refNSF)=[c2].[idCheque]) AND
((c2.percepteur)="HN_Frais"))))



AND((Cheque.percepteur)<>"Fiducie"));

C'est le SELECT dans le Not In qui ralenti tout.

J'ai essayer d'une autre manière aussi, mais c'est tout aussi lent:

SELECT c1.idCheque, c1.percepteur
FROM Cheque AS c1, Cheque AS c2
WHERE (((c1.refNSF)<>[c2].[idCheque]) AND
((c2.percepteur)<>"HN_Frais")



AND((Cheque.percepteur)<>"Fiducie"));

(J'ai simplifier la requête une peu pour le besoin de la cause)

Merci de votre précieuse aide