Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Outils
Outils Forum d'entraide sur les outils pour MySQL. Avant de poster -> Outils MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/12/2006, 16h06   #1
Membre du Club
 
Inscription : janvier 2005
Messages : 244
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 244
Points : 54
Points : 54
Envoyer un message via MSN à dark_vidor
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 :
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 :
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
Citation:
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 :
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

Citation:
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:^^
dark_vidor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2006, 19h20   #2
Membre Expert
 
Avatar de Alexandre T
 
Inscription : mai 2002
Messages : 1 022
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : mai 2002
Messages : 1 022
Points : 1 123
Points : 1 123
La différence est simple : les requêtes sont différentes !

Mesurez cette requête :
Code :
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 T.

PHP5/MySQL5 Codes prêts à l'emploi
30 projets avec codes sources complets pour créer diaporamas photos, chat, arbre généalogique, statistiques de visites, création de graphiques, moteur de recherche, Sudoku etc...

Mes articles
Alexandre T est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2006, 19h38   #3
Membre du Club
 
Inscription : janvier 2005
Messages : 244
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 244
Points : 54
Points : 54
Envoyer un message via MSN à dark_vidor
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 ...
dark_vidor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2006, 00h28   #4
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
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.
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h18.


 
 
 
 
Partenaires

Hébergement Web