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

Outils MySQL Discussion :

Temps d'execution - grosse différence en passant par le php ?


Sujet :

Outils MySQL

  1. #1
    Membre éclairé Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Par défaut Temps d'execution - grosse différence en passant par le php ?
    je fait actuellement quelques tests

    j'ai creer une table bidon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    -- 
    -- Structure de la table `game_biens`
    -- 
     
    CREATE TABLE `game_biens` (
      `id_biens` int(8) unsigned NOT NULL auto_increment,
      `id_users` int(8) unsigned NOT NULL default '0',
      `id_units` int(8) unsigned NOT NULL default '0',
      `id_source` int(8) unsigned NOT NULL default '0',
      `stock` tinyint(1) NOT NULL default '0',
      `resistance` varchar(16) NOT NULL default '',
      `experience` varchar(16) NOT NULL default '',
      PRIMARY KEY  (`id_biens`,`id_users`,`id_units`,`id_source`)
    )
    Code : 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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <?
    #-----[ Paramètres de Configuration ]----------------------
    $host = 'localhost';
    $user = 'root';
    $base = 'test';
    $pass = '';
    $db = mysql_connect ($host, $user, $pass);
    mysql_select_db ($base,$db);
     
    #-----[ Temps d'Execution ]--------------------------------
    function microtime_float()
    {
       list($usec, $sec) = explode(" ", microtime());
       return ((float)$usec + (float)$sec);
    }
    $time_start = microtime_float();
     
    #-----[ Construction du tableau de joueurs ]---------------
    for( $i=0 ; $i<=200 ; $i++ )
    {
    	$array_joueurs[$i] = round(rand(1,2)).substr(round(rand(1000001,1999999)), 1);
    }
     
    for( $i=201 ; $i<=210 ; $i++ )
    {
    	$array_joueurs[$i] = '3'.substr(round(rand(1000001,1999999)), 1);
    }
     
    #-----[ Insertion en BDD ]--------------------------------
    for( $i=0 ; $i<=1000000000 ; $i++ )
    {
    	$sql = 'INSERT INTO game_biens SET '
    			.'id_users = '.$array_joueurs[round(rand(0,210))].', '
    			.'id_units = '.round(rand(0,300)).', '
    			.'id_source = '.round(rand(0,300)).', '
    			.'stock = '.round(rand(1,3)).', '
    			.'resistance = '.round(rand(0,300)).', '
    			.'experience = '.round(rand(0,300)) ;
     
    	echo $sql.'<br>';
    	mysql_query($sql);
     
    }
     
    #-----[ Temps d'Execution ]--------------------------------
    $time_end = microtime_float();
    $time = $time_end - $time_start;
    $time = substr($time, 0, strpos($time, ".")).substr(strstr($time, '.'), 0 , 4);
    return 'Page générée en '.$time.' secondes';
    ?>
    Je me suis arreter un peu avant la fin du milliard ^^

    Je voulais tester l'acessibilité aux données sur une grosse table
    Nb d'enregistrements : 919250
    Nb de joueurs team1 : 422693
    Nb de joueurs team2 : 453004
    Nb de joueurs team3 : 43553
    Page générée en 9.968 secondes
    Bon seulement problème ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = 'SELECT id_biens FROM game_biens';
    $req = mysql_query($sql);
    echo '<br>Nb d\'enregistrements : '.mysql_num_rows($req);
    Si je met que ça il me met : Page générée en 4.573 secondes ; quand j'execute ma requete direct sous phpmyadmin

    Affichage des enregistrements 0 - 29 (919250 total, traitement: 0.0004 sec.)
    requête SQL:
    SELECT id_biens
    FROM game_biens
    LIMIT 0 , 30
    d'ou viens une telle différence ? j'veux bien que l'affichage de ma page soit plus long mais la quand même sacré difference :heuuu:^^

  2. #2
    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 : 48
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Par défaut
    La différence est simple : les requêtes sont différentes !

    Mesurez cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = 'SELECT id_biens FROM game_biens LIMIT 0,30';
    $req = mysql_query($sql);
    echo '<br>Nb d\'enregistrements : '.mysql_num_rows($req);
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  3. #3
    Membre éclairé Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Par défaut
    hum j'ai remarquer ce problème en effet mais phpmyadmin ajoute automatiquement le limit comment le faire 'sauter' je veux belle et bien mesurer les temps pour acceder a mes données ... savoir si je dois ou non fractionner en plusieurs table ou si ça poura s'avererer relativement stable ...

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 286
    Par défaut
    Citation Envoyé par dark_vidor
    hum j'ai remarquer ce problème en effet mais phpmyadmin ajoute automatiquement le limit comment le faire 'sauter'
    En plaçant toi-même un LIMIT supérieur à la taille de ta table.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 01/07/2015, 11h13
  2. Réponses: 6
    Dernier message: 04/02/2013, 15h48
  3. executer du php en passant par linux
    Par bigs3232 dans le forum Unix
    Réponses: 2
    Dernier message: 17/06/2010, 12h29
  4. [MySQL] Temps d'execution d'une requete via phpMyAdmin ou PHP
    Par gcvoiron dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 13/10/2009, 23h08
  5. [PHP-JS] Upload de fichier en passant par JAVASCRIPT + PHP
    Par polothentik dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/05/2008, 08h52

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