Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2403 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [ MySQL ] optimisation, parlons-en ( newbee inside )

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ MySQL ] optimisation, parlons-en ( newbee inside )

n°423184
j-'-r
Sans horraires fixe
Posté le 10-06-2003 à 20:49:40  profilanswer
 

Quels sont les "trucs" pour optimiser ses requetes MySQL ?
prenon l'exemple ( parlant ) d'un forum
et de sa page pour afficher la liste des sujets
20 sujets parmis 20 000 le tout en moin de 0.05 sec...
comment faire ? comment marchent les index et autres "trucs" ?
quels type de champs préferer aux autres ? ( VARCHAR vs MEDIUMTEXT... )
 
j'ai besoin d'aide, de conseils...

mood
Publicité
Posté le 10-06-2003 à 20:49:40  profilanswer
 

n°423195
j-'-r
Sans horraires fixe
Posté le 10-06-2003 à 20:58:05  profilanswer
 

pour mon forum, je fais du 0.14 sec pour 10'000 sujets sur la page sujet
et 0.2 sec pour 1 réponse ( et 10'000 sujets avec 1 reponse par sujet ) sur la page des messages...
 
mes requetes "pour l'exemple" :
SUJET :

SELECT id,ico,titre,nbr_rep,nbr_vu,auteur,dernier,dernierp  
FROM sujet  
USE INDEX(dernier)  
WHERE cat='$cat'  
ORDER BY `dernier` DESC  
LIMIT $lim,$nspp


MESSAGES :

SELECT id,nom,date,message  
FROM message  
USE INDEX(date)  
WHERE sujet='$sujet'  
ORDER BY 'date'  
LIMIT $lim,$nrpp

n°423264
Core 666
Posté le 10-06-2003 à 22:19:05  profilanswer
 

J-'-R a écrit :

pour mon forum, je fais du 0.14 sec pour 10'000 sujets sur la page sujet
et 0.2 sec pour 1 réponse ( et 10'000 sujets avec 1 reponse par sujet ) sur la page des messages...
 
mes requetes "pour l'exemple" :
SUJET :

SELECT id,ico,titre,nbr_rep,nbr_vu,auteur,dernier,dernierp  
FROM sujet  
USE INDEX(dernier)  
WHERE cat='$cat'  
ORDER BY `dernier` DESC  
LIMIT $lim,$nspp



Poste le résultat d'un EXPLAIN sur ta requete et la structure de ta table sujet, ca permettra de parler sur quelque chose de plus solide :) Quelques pistes en vrac sinon : Que représente ton index "dernier" ? Le champ "cat" est-il indexé ? Tu utilises quelle version de MySQL ? Si c'est une 3.23, les classements par ordre décroissant ne sont pas optimisés, le ORDER DESC est déconseillé.
 
0.14 secondes ca reste correct, même si 10 000 sujets on est est vite avec un gros forum. Tu as quoi comme machine pour obtenir ce temps ? Sur les 0.14 secondes combien prend la requête seule (début du timer avant le mysql_query, fin juste après) ?

n°423289
HORNY-Gran​dcornu
grumf !
Posté le 10-06-2003 à 23:03:16  profilanswer
 

Core 666 a écrit :


Poste le résultat d'un EXPLAIN sur ta requete et la structure de ta table sujet, ca permettra de parler sur quelque chose de plus solide :) Quelques pistes en vrac sinon : Que représente ton index "dernier" ? Le champ "cat" est-il indexé ? Tu utilises quelle version de MySQL ? Si c'est une 3.23, les classements par ordre décroissant ne sont pas optimisés, le ORDER DESC est déconseillé.
 
0.14 secondes ca reste correct, même si 10 000 sujets on est est vite avec un gros forum. Tu as quoi comme machine pour obtenir ce temps ? Sur les 0.14 secondes combien prend la requête seule (début du timer avant le mysql_query, fin juste après) ?


 
[newb mode on :d ]  
 
et il y a d'autres méthodes pour parvenir au même résultat ?
 
Ca représente quoi, d'indexer un champ ?

n°423324
skylight
Made in France.
Posté le 10-06-2003 à 23:42:56  profilanswer
 

HORNY-GRANDCORNU a écrit :


 
[newb mode on :d ]  
 
et il y a d'autres méthodes pour parvenir au même résultat ?
 
Ca représente quoi, d'indexer un champ ?

d'avoir un acces direct au nuplet que tu veux consulter
 
en gros le SGBD n'a pas a parcourir toutes les lignes pour trouver ton nuplet, mais y accede directement

n°423489
j-'-r
Sans horraires fixe
Posté le 11-06-2003 à 10:03:49  profilanswer
 

Core 666 a écrit :


Poste le résultat d'un EXPLAIN sur ta requete et la structure de ta table sujet, ca permettra de parler sur quelque chose de plus solide :) Quelques pistes en vrac sinon : Que représente ton index "dernier" ? Le champ "cat" est-il indexé ? Tu utilises quelle version de MySQL ? Si c'est une 3.23, les classements par ordre décroissant ne sont pas optimisés, le ORDER DESC est déconseillé.
 
0.14 secondes ca reste correct, même si 10 000 sujets on est est vite avec un gros forum. Tu as quoi comme machine pour obtenir ce temps ? Sur les 0.14 secondes combien prend la requête seule (début du timer avant le mysql_query, fin juste après) ?


Pas de chance pour moi c'est une 3.23... :(
 


EXPLAIN SELECT id,ico,titre,nbr_rep,nbr_vu,auteur,dernier,dernierp FROM sujet USE INDEX(dernier) WHERE cat='1' ORDER BY `dernier` DESC LIMIT 0,20
 
table type   possible_keys key     key_len ref  row   extra
sujet index  cat           dernier 8       NULL 10014 whre used

 
cat est indexé, et dernier c'est la date
 
le tout sur duron 850 400mo de ram


Message édité par j-'-r le 11-06-2003 à 10:19:11
n°423498
j-'-r
Sans horraires fixe
Posté le 11-06-2003 à 10:14:43  profilanswer
 

requete seule avec sa boucle while associée 0.03 sec ( page en 0.07 )


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [ MySQL ] optimisation, parlons-en ( newbee inside )

 

Sujets relatifs
[mysql] copie de colonne dans une autreForum (board) Php/Mysql
[HTML/PHP/JS]Optimisation site photo[mySQL] concat de plusieurs enregistrement
utilité de la Base mysql et tables user, db et host dans phpmyadmin?Besoin d'aide pour une requete MySQL un peu spéciale (SELECT)
site pour les commandes php/mysql[PHP/mySQL] Consulter un site PHP en local
Probleme d'optimisation [php/mysql] 
Plus de sujets relatifs à : [ MySQL ] optimisation, parlons-en ( newbee inside )


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR