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 régulier 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
    Points : 118
    Points
    118
    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 : 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
    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);

  3. #3
    Membre régulier 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
    Points : 118
    Points
    118
    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 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 739
    Points
    11 739
    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