IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Requête optimisable ?


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 55
    Points : 26
    Points
    26
    Par défaut Requête optimisable ?
    Bonjour,

    je souhaite savoir si la requête suivante est optimale ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT id, nom, ville, email, mobile 
    FROM debiteurs 
    WHERE id in (SELECT max(id) FROM debiteurs WHERE nom LIKE '%toto%' GROUP BY nom ORDER BY nom)
    en clair, je souhaite remonter tous les infos sur les débiteurs ayant un nom contenant "toto" (pour l'exemple).
    sachant qu'il y a des doublons dans la base, je veux le dernier enregistrement connu avec les infos correspondantes.

    j'espère avoir été assez explicite...

    Merci de l'aide.

  2. #2
    Membre averti
    Avatar de sweetasnz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 212
    Points : 375
    Points
    375
    Par défaut
    si tu utilise le "group by" as-tu vraiment besoin du "order by nom" qui est une clause assez lourde en terme de temps de réponse en général.

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,

    Dans votre sous-requête l'order by ne sert à rien.
    Le group by non plus puisque vous ne selectionnez pas le nom dans la clause select.

    Votre solution est bonne si et seulement si "le dernier enregistrement connu" est la ligne possédant l'id le plus grand

  4. #4
    Membre averti
    Avatar de sweetasnz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 212
    Points : 375
    Points
    375
    Par défaut
    Citation Envoyé par punkoff Voir le message
    bonjour,

    Dans votre sous-requête l'order by ne sert à rien.
    Le group by non plus puisque vous ne selectionnez pas le nom dans la clause select.

    Votre solution est bonne si et seulement si "le dernier enregistrement connu" est la ligne possédant l'id le plus grand
    pas vraiment car le "group by" permet de dicriminer les nom si il y a par exemple 'xtotox' et 'ytotoy' dans sa liste. Donc il faut le laisser pour avoir tous les enregistrements de type '%toto%'

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 55
    Points : 26
    Points
    26
    Par défaut
    Merci.

    effectivement, order by n'est pas utile.
    par contre le group by est nécessaire, puisque je sélectionne le nom dans mon select.
    sinon, il ne me retourne qu'1 seule ligne au lieu de 2 (résultat voulu).

    ce que je voulais savoir c'est si 1 autre requête était possible et optimale.

  6. #6
    Membre averti
    Avatar de sweetasnz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 212
    Points : 375
    Points
    375
    Par défaut
    je pense que ta requête est celle qu'il te faut pour récupérer les infos que tu veux, donc pas mieux de mon coté

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sous-Sous-Requête: Optimisation possible ?
    Par FMaz dans le forum Requêtes
    Réponses: 11
    Dernier message: 03/04/2008, 03h49
  2. [SQL2K5] Plan de requête optimisable ?
    Par elsuket dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 31/08/2007, 11h33
  3. Réponses: 2
    Dernier message: 09/11/2006, 07h37
  4. Réponses: 10
    Dernier message: 20/10/2006, 16h36
  5. requête à optimiser
    Par tung-savate dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 20/10/2005, 07h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo