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

PHP & Base de données Discussion :

Requete Mysql très lente [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    4
    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 : Mars 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Requete Mysql très lente
    Bonjour,

    Je rencontre un probleme avec une table de ma base.
    Elle comporte 13000 enregistrements et lorsque je l'interroge avec la requete suivante:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT c . *
    FROM jos_concerts AS c
    WHERE c.date >= '2011-03-16'
    LIMIT 0 , 20

    elle met 10secondes à afficher le résultat...

    Voici la table:


    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    CREATE TABLE IF NOT EXISTS `jos_lylo_concerts` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `id_lieu` int(11) NOT NULL,
      `date` date NOT NULL,
      `heure` time NOT NULL,
      `paf` varchar(255) NOT NULL,
      `plateau` varchar(255) NOT NULL,
      `infos` varchar(255) NOT NULL,
      `style` int(5) NOT NULL,
      `style_parent` int(5) NOT NULL,
      `type_clubbing` int(1) NOT NULL,
      `type_jamsession` int(1) NOT NULL,
      `type_enfants` int(1) NOT NULL,
      `image` varchar(255) NOT NULL,
      `description` text NOT NULL,
      `code_postal` varchar(20) NOT NULL,
      `departement` int(5) NOT NULL,
      `region` int(5) NOT NULL,
      `checked_out` int(11) NOT NULL,
      `checked_out_time` datetime NOT NULL,
      `last_update` datetime NOT NULL,
      `published` int(11) NOT NULL,
      `frontpage` int(1) NOT NULL,
      `ordering` int(11) NOT NULL,
      `params` text NOT NULL,
      `id_filemaker` int(11) NOT NULL,
      PRIMARY KEY (`id`),
      KEY `idx_style` (`style`),
      KEY `idx_date` (`date`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COMMENT='table des concerts' AUTO_INCREMENT=29590 ;

    Avez-vous une piste afin d'obtenir un temps de recherche plus convenable ?

    Merci Beaucoup

    David

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Ta question à déjà trouvé sa réponse par ici: http://stackoverflow.com/questions/9...field-in-mysql

    Visiblement, la solution est d'utiliser une clause between.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    4
    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 : Mars 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse mais malheureusement ça ne change rien.

    D'autant que BETWEN n'est pas ce que je cherche à faire puisque je cherche les données à partir d'une date et on pas entre deux dates.

    J'ai séparé la date et l'heure... donc je ne travaille que sur la date.

    J'ai essayé tous les exemples du lien mais sans succès, toujours aussi lent...

    Je penche sur une optimisation des indexs mais là je sèche...

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    4
    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 : Mars 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Je cherche ... mais je viens de découvrir que quand je retirais les alias au nom de tables, le temps de chargement est nettement plus rapide ?!

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
    FROM jos_concerts
    WHERE date >= '2011-03-16'
    LIMIT 0 , 20

    une idée ?

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    4
    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 : Mars 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Mon problème est réglé...

    Non seulement le fait d'ajouter des alias à mes noms de table augmetait le temps d'execution (???)

    je viens de comprendre qu'il fallait indexer les champs présents dans une jointure.

    Si ça peut aider.

  6. #6
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    je viens de comprendre qu'il fallait indexer les champs présents dans une jointure.
    C'est quoi le rapport avec ta requête de départ ?

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

Discussions similaires

  1. ERP (Php/Mysql) très lent, évaluation objective.
    Par piscou51000 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 10/01/2011, 13h49
  2. [MySQL] requete mysql vachement lente!
    Par kaking dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 26/11/2008, 13h42
  3. SQL Server très lent comparé à Mysql
    Par berceker united dans le forum Installation
    Réponses: 14
    Dernier message: 14/12/2006, 20h53
  4. Connexion très lente à un serveur MySQL
    Par touff5 dans le forum JDBC
    Réponses: 3
    Dernier message: 29/09/2006, 14h13
  5. SQL Server très lent comparé à Mysql ?
    Par berceker united dans le forum Décisions SGBD
    Réponses: 9
    Dernier message: 17/06/2006, 11h08

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