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 :

Optimisation de DELETE


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Optimisation de DELETE
    Bonjour,

    j'utilise actuellement deux requêtes pour conserver un certain nombre d'enregistrements dans une table et supprimer les plus anciens...

    [MATABLE]
    ID int
    Champ1 varchar(50)
    Champ2 varchar(50)
    Critere1 varchar(50)
    Critere2 varchar(50)
    MaDate datetime
    Dans le code ça donne

    $Q = "SELECT ID FROM MATABLE WHERE Critere1 = ".$critere1." AND Critere2".$critere2." ORDER BY MaDate DESC LIMIT 9,1";
    $R = mysql_query($Q);
    if ( mysql_num_rows($R) != 0 )
    {
    $Q = "DELETE FROM MATABLE WHERE ID < ".$mysql_result($R, 0, "ID")." AND Critere1 = ".$critere1." AND Critere2".$critere2.";
    $R = mysql_query($Q);
    }
    N'y a t-il pas un moyen via une seule requête de supprimer tous les enregistrements sauf les 10 plus récents ?

  2. #2
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Bonjour,

    ORDER BY et LIMIT peuvent être utilisés directement dans le DELETE (depuis la version 4 je crois).
    Pensez au bouton

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    là dessus aucun problème mais ce qui m'intéresserait ce serait une alternative à ceci en une seule requête :

    "DELETE FROM MATABLE WHERE Critere1 = ".$critere1." AND Critere2 = ".$critere2." AND ID NOT IN ( SELECT ID FROM MATABLE WHERE Critere1 = ".$critere1." AND Critere2 = ".$critere2." ORDER BY MaDate DESC LIMIT 0,10)"

  4. #4
    Membre éclairé
    Avatar de efficks
    Inscrit en
    Septembre 2005
    Messages
    712
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 712
    Points : 776
    Points
    776
    Par défaut
    Il me semble que c'est déjà une seule requête mais avec deux commandes à l'intérieur.
    Ce que tu veux dire c'est sans le SELECT dans le DELETE?
    Je ne comprends pas trop ce que tu n'aimes pas dans cette requête, c'est comme ça que ça doit fonctionner.
    Avant de poster : FAQ, tutos, rechercher, google, ... Après :
    Merci

  5. #5
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Sans utiliser de sous-requêtes tu as ce petit "bricolage" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DELETE FROM matable WHERE ...
    ORDER BY id desc LIMIT 10, 10000000000000000000
    Pensez au bouton

  6. #6
    Futur Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    C'est moche mais fonctionnel,
    merci

    RESOLU.

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

Discussions similaires

  1. Optimiser un delete
    Par canardchat dans le forum Langage SQL
    Réponses: 8
    Dernier message: 26/11/2013, 09h16
  2. Réponses: 3
    Dernier message: 12/04/2011, 13h59
  3. optimiser un delete
    Par PaladinFr dans le forum Requêtes
    Réponses: 8
    Dernier message: 16/02/2010, 14h20
  4. Optimisation requête delete
    Par bibi92 dans le forum SQL
    Réponses: 12
    Dernier message: 20/05/2008, 13h57
  5. Optimiser un delete sur un outer join (oracle 9)
    Par pascal2013 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/02/2008, 09h48

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