Comment optimiser une requette

Résolu
pile_poil
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
- 6 août 2009 à 06:51
pile_poil
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
- 6 août 2009 à 19:34
bonjour
mes connaissances en base de données etant plus que rudimentaires j'aurais besoin d'un peu d'aide
j'ai dans une table un champ qui contient des "Name" qui se présentent ainsi:
ADA.01 ; HYBR.01 ; ADA.02 ; MTX.01 ; MXR.01 ; SW.01 ; etc...
ce sont les acronymes désignant des appareils avec leur indice d'ordre dans un plan autocad
j'aimerais pouvoir ne récupérer que les enregistrements dont le "Name" contient un acronyme donné
par exemple récupérer dans recordset tous les enregistrements qui dans le champ "name" contiendraient ADA
pour l'instant je fais ceci mais ça ne me semble pas tres optimisé
    RecSet.Open "SELECT * FROM Matos WHERE NumZone ='" & sNumZone & "' ORDER BY Name ", CMain, adOpenDynamic
    Do Until RecSet.EOF
        If InStr(RecSet!Name, acronyme) <> 0 Then
           'ici mon code de traitement
        End If
        RecSet.MoveNext
    Loop


Dans la foulée si quelqu'un connaissait un tuto "pour les nuls" ça m'éviterais de poser des question aussi basiques
Merci d'avance

6 réponses

lesdis
Messages postés
403
Date d'inscription
mercredi 19 avril 2006
Statut
Membre
Dernière intervention
7 août 2020
1
6 août 2009 à 14:01
Bonjour,

Voir aussi la clause LIKE

"SELECT * FROM Matos WHERE NumZone ='" & sNumZone & "'
AND type_piece LIKE "%ADA%"
ORDER BY Name "

Te renverra tous les enregistrements dont type_piece contient le mot ADA.

Bonne Prog
3
nhervagault
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
35
6 août 2009 à 08:11
Salut

Utilise le IN
et evite le *

SELECT * FROM Matos WHERE NumZone ='" & sNumZone & "'
AND type piece in ('ADA.01,'.......)
ORDER BY Name "

Bon sql
0
nhervagault
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
35
6 août 2009 à 14:08
C'est pas beau le like %mot%

C'est imperformant au possible d'ou mon IN qui est plus performant

Pour info, on SQL on evite le plus possible les like et les OR
Quand on peut transformer en ensemble fini les conditions.
0
lesdis
Messages postés
403
Date d'inscription
mercredi 19 avril 2006
Statut
Membre
Dernière intervention
7 août 2020
1
6 août 2009 à 14:19
Ha je ne savais pas, merci du tuyaux :)

Bonne Prog
0

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

Posez votre question
nhervagault
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
35
6 août 2009 à 15:11
C'est logique quand y pense.

Il faut une réflexion ensembliste dans les bases de données.

Et il faut eviter les NOT au passage.

Et éviter les left join ou right join si un inner join fait l'affaire.
Ne pas mettre les clauses de jointure dans le where mais en join.
0
pile_poil
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
6 août 2009 à 19:34
c'est peut être pas beau mais ça marche parfaitement
0