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 :

Requête simple très lente [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Chef opération transport urbain
    Inscrit en
    Avril 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Chef opération transport urbain
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2008
    Messages : 92
    Points : 112
    Points
    112
    Par défaut Requête simple très lente
    Bonjour à tous,

    J'ai déjà créer plusieurs bases de données avec plusieurs tables, lignes, etc... Mais cette fois-ci je suis très surpris par la lenteur de l'exécution de ma requête.

    J'ai une table toute simple

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    `id` int(5) NOT NULL AUTO_INCREMENT,
    `nom` varchar(100) NOT NULL,
    `dossier` varchar(100) NOT NULL,

    Elle fait le lien entre le nom de dossier physique et le nom avec accents pour l'affichage. Vient ensuite ma requête dans mon fichier PHP

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    list($name) = mysqli_fetch_row(mysqli_query($connexion,"select nom from albums where dossier='".addslashes($fname)."'"));

    Encore là, pas de quoi appeler à l'aide !!

    Mais cette requête prend 1 seconde à s'exécuter . Actuellement j'ai 5 dossiers dont seulement un qui trouve preneur dans la requête (une seule ligne dans ma table), donc 1 X 5 = 5 secondes. Je n'imagine même pas avoir plus de 20 dossiers !

    À noter ici que ce n'est pas le script qui est lent, car sans les 5 requêtes, le script s'exécute sous une seconde.

    Quelqu'un a une idée ?

    Merci à l'avance

  2. #2
    Membre régulier
    Homme Profil pro
    Chef opération transport urbain
    Inscrit en
    Avril 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Chef opération transport urbain
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2008
    Messages : 92
    Points : 112
    Points
    112
    Par défaut
    Rebonjour à tous,

    Après plusieurs heures de recherche, depuis hier en fait mais le post date de quelques minutes, j'ai trouvé la solution.

    C'est ma connexion à la BD qui est lente. J'avais fait une erreur toute simple c'est que je me connectais à la BD, j'exécutais ma requête et je me déconnectais. Tout ça à chaque requête.

    Si ça peut aider quelqu'un !

    Merci quand même !

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Au passage, si tu utilises 5 fois la même requête avec des paramètres différents, tu peux utiliser une requête préparée : c'est fait pour ça, et au passage ça va te débarrasser de l'horrible addslashes qui n'a rien à faire là.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $stmt = mysqli_prepare($connexion, "select nom from albums where dossier= ?");
    mysqli_stmt_bind_param($stmt, 's', $fname);
     
    mysqli_stmt_bind_result($stmt, $name);
     
    $fname = "dir_1";
    mysqli_stmt_execute($stmt);
    mysqli_stmt_fetch($stmt);
    echo $name;
     
    $fname = "dir_2";
    mysqli_stmt_execute($stmt);
    mysqli_stmt_fetch($stmt);
    echo $name;
    (syntaxe non garantie : je n'utilise pas mysqli, je suis passée directement de mysql_xxxx à PDO)

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

Discussions similaires

  1. Requête PostgreSQL très lente
    Par adelinesc2 dans le forum Requêtes
    Réponses: 7
    Dernier message: 19/02/2015, 12h05
  2. Requête SQL très lente
    Par fishingman dans le forum VB.NET
    Réponses: 9
    Dernier message: 13/08/2012, 12h15
  3. Requête Access trés lente ?
    Par ghostdz dans le forum Bases de données
    Réponses: 4
    Dernier message: 03/08/2007, 08h41
  4. Réponses: 12
    Dernier message: 24/07/2007, 11h09
  5. Réponses: 2
    Dernier message: 04/03/2006, 10h47

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