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 d'un tri par date


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 48
    Points : 46
    Points
    46
    Par défaut Optimisation d'un tri par date
    Bonjour a tous

    J'ai fais une requete "recursive" qui récupère les 5 dernieres entrée par groupes et par date d'une table.
    Je met récursive entre guillemet car en fait je l'ai mise simplement dans une boucle.
    Première question, est ce que la boucle est beaucoup plus pénalisante en performance qu'une fonction récursive?

    En testant cette requète sur une base d' environ 1000000 d'entrée, j'ai un temps en moyenne de 5 secondes. Dans la réalité on part avec une base vide, mais ca montre les limitations a plus ou moin court terme.
    Cependant, quand j'enleve le ORDER BY Date, le temps tombe a 0,1 sec en moyenne
    Ma seconde question donc, Y a t il un moyen de remplacer le tri par date par une autre fonction qui sera plus rapide ? De plus, aprés réflexion, sachant que les entrées sont daté par NOM() est ce que par defaut mes entrées ne sont pas déjà triées par date, et donc le ORDER BY devient inutiles ?

    Qu'en pensez vous ?


  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,

    Il y a fort à parier que la colonne date n'est pas indexée... rajoute un index si c'est le cas.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 48
    Points : 46
    Points
    46
    Par défaut
    En effet il n'y avait pas d'index.
    J'en ai rajouté un ca n'a pas énormément d'effet. Ce qui est logique puisque c'est un DATETIME, il y a donc pratiquement autant d'index que d'entrée
    J'insiste un peu sur mon idée du "trié par défaut", car aprés vérification, mes entrées son bien trié par date mais dans le mauvais sens.
    Question donc, y a t il un moyen de trier par defaut la base par date ?

  4. #4
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Citation Envoyé par padawa
    il y a donc pratiquement autant d'index que d'entrée
    Il y a autant de cardinalité que d'index... Mais les index sont utiles même si toutes les valeurs de ton champ sont différentes !

  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
    Une table peut être comparée à un sac de billes, il n'y a pas d'ordre préétabli entre les lignes.

    Bizarre que ça ne donne pas plus de résultats que ça...

  6. #6
    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
    Citation Envoyé par Alexandre T
    Il y a autant de cardinalité que d'index... Mais les index sont utiles même si toutes les valeurs de ton champ sont différentes !
    Ils ne sont même jamais aussi utiles que lorsque toutes les valeurs sont différentes

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 48
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par Maximilian
    Ils ne sont même jamais aussi utiles que lorsque toutes les valeurs sont différentes
    Tiens, j'aurais penser l'inverse moi

    En essayant divers trucs, j'ai noter une amélioration en rajoutant la clause
    Ce qui donne le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for($i=1;$i<=$total_groupe;$i++){
    mysql_query("SELECT * FROM liste WHERE id_groupe = $i AND date < NOW() ORDER BY date DESC");
    }
    Ca peux peut etre amené de l'eau au moulin

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 48
    Points : 46
    Points
    46
    Par défaut
    Je pensais à une autre chose aussi, la date est au format DATETIME.
    Est ce que ca ne serait pas plus performant avec un format timestamp?
    (pas de conversion donc plus rapide, enfin je pense)

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

Discussions similaires

  1. [SQL-VBA]tri par date dans access
    Par Mickey_Mouse dans le forum VBA Access
    Réponses: 5
    Dernier message: 06/02/2007, 09h49
  2. Requête SQL de tri par date
    Par Alain15 dans le forum Requêtes
    Réponses: 8
    Dernier message: 03/08/2006, 08h34
  3. requete : tri par date + groupement
    Par cbe dans le forum Requêtes
    Réponses: 8
    Dernier message: 08/01/2006, 19h30
  4. tri par date
    Par Digiduck dans le forum Requêtes
    Réponses: 5
    Dernier message: 06/06/2005, 21h51
  5. [ XML ][ XSL ] tri par date
    Par zozolh2 dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/08/2004, 10h19

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