ODBC lent??????

Librett -  
 Librett -
Bonjour!

Je suis entrain de batir une petite BD avec access et pour l'interface je le fait avec les MFC. J'utilise un lien ODBC et je trouve que c'est tres lent quand les requetes deviennent grosses. Est-ce normal???

Merci!

13 réponses

teebo Messages postés 33570 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
Ba ca depend de ta requete, du nombre de tables impliquees, de la conception de ta base, de plein de choses en fait...

@,@
\__/
0
Librett
 
Ouin.... mais ma requete utilise pe 20 tables mais sur le nombre il y a des tables qui reviennent. Mais je doute que ma requete soit une des plus complique!
Si je ne met pas de critere a aucun champ dans ma requete et que je l'execute, cela peut prendre presque 5 minutes avant dafficher mes enregistrements. Par contre si je met * comme critere a un des champs qui est le numero de chaque enregistrement, et bien la requete s'execute instantanement.
Jusque la tout va bien(avec un *).....Lorsque je run mon programme en c++ et quil est rendu a ouvrir la requete et bien si l'asterix est la bien la requete est vide et la tout le reste ne fonctionne plus. Par contre si je l'enleve dans ma requete et bien la cest TRES long....
Cest pe pas le lien ODBC mais c'est curieux....
0
teebo Messages postés 33570 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
Donne ta requete parce que la comme ca, je peux rien dire, amis de maniere generale, il faut toujours place la cle de la table dans la recherche, ca accelere grandement les choses...de meme il ne faiut mettre que les champs necessaire...

@,@
\__/
0
Librett
 
Tu veux voir ma requete?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
teebo Messages postés 33570 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
Ba si c'est pas indiscret...
Ca permettrait d'avoir du concret...

@,@
\__/
0
Librett
 
Non ya pas de probleme mais tu veux avoir ca comment?
0
teebo Messages postés 33570 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
Ba sous forme de texte ici avec un petit copie colle...
Elle est si longue que ca?

@,@
\__/
0
Librett
 
En SQL......Eurkk!
C'est pas beau a voir.....je vais faire un test!
mais je t'aurai prevenu!:o)
0
Librett
 
SELECT Planches.Numeroplanche, Grade.Grade, Longueur.TagLongueur, Grade_1.Grade, Longueur_1.TagLongueur, Grade_2.Grade, Longueur_2.TagLongueur, Grade_3.Grade, Longueur_3.TagLongueur, Grade_4.Grade, Longueur_4.TagLongueur, Grade_5.Grade, Longueur_5.TagLongueur, Grade_6.Grade, Longueur_6.TagLongueur, Grade_7.Grade, Longueur_7.TagLongueur, [Defauts visuel].Defauts, Dimension.DimTAG, Client.Societe, Planches.LongueurReelles, Planches.LongueurLue, Planches.IDPlanche
FROM (((((((((((((((((([Defauts visuel] INNER JOIN Planches ON [Defauts visuel].IDDefaut = Planches.Iddefaut) INNER JOIN Grade ON (Planches.[Solution classification] = Grade.IDGrade) AND (Planches.[Solution classification] = Grade.IDGrade)) INNER JOIN Grade AS Grade_1 ON Planches.[Solution classificationCIT] = Grade_1.IDGrade) INNER JOIN Grade AS Grade_2 ON Planches.[Solution CQ] = Grade_2.IDGrade) INNER JOIN Grade AS Grade_3 ON Planches.[Solution CQCIT] = Grade_3.IDGrade) INNER JOIN Grade AS Grade_4 ON Planches.[Solution LGO] = Grade_4.IDGrade) INNER JOIN Grade AS Grade_5 ON Planches.[Solution LGOCIT] = Grade_5.IDGrade) INNER JOIN Grade AS Grade_6 ON Planches.[Solution consensus] = Grade_6.IDGrade) INNER JOIN Grade AS Grade_7 ON Planches.[Solution consensusCIT] = Grade_7.IDGrade) INNER JOIN Longueur ON Planches.LongClass = Longueur.IDLongueur) INNER JOIN Longueur AS Longueur_1 ON Planches.LongClassCIT = Longueur_1.IDLongueur) INNER JOIN Longueur AS Longueur_2 ON Planches.LongCQ = Longueur_2.IDLongueur) INNER JOIN Longueur AS Longueur_3 ON Planches.LongCQCIT = Longueur_3.IDLongueur) INNER JOIN Longueur AS Longueur_4 ON Planches.LongLGO = Longueur_4.IDLongueur) INNER JOIN Longueur AS Longueur_5 ON Planches.LongLGOCIT = Longueur_5.IDLongueur) INNER JOIN Longueur AS Longueur_6 ON Planches.LongCon = Longueur_6.IDLongueur) INNER JOIN Longueur AS Longueur_7 ON Planches.LongConCIT = Longueur_7.IDLongueur) INNER JOIN Dimension ON Planches.dimension = Dimension.IDDim) INNER JOIN Client ON Planches.NoClient = Client.[No];

je ne suis pas convaincu que tu vas ty retrouver.....
0
teebo Messages postés 33570 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
T'inquietes, j'ai l'habitude ;-)
Tes tables longueurs,grades et planches elles sont grosses comment (en gros...) et quelle est leur cle?

Ton histoire d'* tu la mets ou?
Ca c'est la requete qui marche, mais qui prend du teps su j'ai bien compris...

@,@
\__/
0
Librett
 
Cest bien ca...si je l'execute cest tres long a moin que j'ajoute ca a la fin WHERE (((Planches.Numeroplanche) Like "*".......alors la c instantanne!!!!
Les tables:
Longueur
(cle)IDLongueur Longueur TagLongueur
1 0 Nil
2 4 4 pi.
3 5 5 pi.
4 6 6 pi.
5 8 8 pi.
6 10 10 pi.
7 12 12 pi.
8 14 14 pi.
9 16 16 pi.
10 18 18 pi.
11 20 20 pi.
Grade
(cle)IDGrade Grade
1 msr 2700
2 msr 2100
3 msr 1650
4 J Grade
5 No 1
6 No 2
7 No 3
8 No 4
9 Econo
10 Stud
11 Aucun
et Planches contient enviroon 900 enregistrement de 27 champs dont trois forme la cle soit Numeroplanche, dimension et NoClient
0
teebo Messages postés 33570 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
Tu as essaye ta requete direct en Access, j'ai le sentiument qu'elle prendrait deja du temps...mais sinon je pense que ca vient de ODBC, il n'y a rien qui me choc, je dirai plutot que toute ta base a l'air bien foutue...
@,@
\__/
0
Librett
 
On en arrive a la meme conclusion....c'est triste mais je vais devoir vivre avec ou changer pour un autre sgbd et ne pas passer par ODBC.
Je te remerci pour ton temps!
0