Qui peut m'aider ? [Optimisation Mysql] - SQL/NoSQL - Programmation
Marsh Posté le 08-06-2002 à 20:26:29
Euh, ou qu'elle est ta requête?
Sinon, rajoute un index sur le champs que tu dois trier, et ca ira mieux
Marsh Posté le 08-06-2002 à 20:30:00
Toutes les infos sont sur la meme table donc l'index je suis pas sur que cela change qq. chose ( à mons que je n'ia pas tout compris a l'index
j'ai fait l'edit pour la requete
Marsh Posté le 08-06-2002 à 20:33:57
Stligar a écrit a écrit : Toutes les infos sont sur la meme table donc l'index je suis pas sur que cela change qq. chose ( à mons que je n'ia pas tout compris a l'index j'ai fait l'edit pour la requete |
En effet t'as pas compris pour l'index, rajoute un index sur id si il y en a pas.
Mais je pige pas pourquoi tu le tries vu que tu prends tout après
Marsh Posté le 08-06-2002 à 20:36:08
L'index sur Id il est mis depuis le debut (une habitude )
Sinon pour le tri je le fais car comme je l'ai dit au debut je n'y connais pas grand chose et c'est le seul truc que je connais pour recuperer des infos dans la base
Marsh Posté le 08-06-2002 à 20:41:39
Stligar a écrit a écrit : Sinon pour le tri je le fais car comme je l'ai dit au debut je n'y connais pas grand chose et c'est le seul truc que je connais pour recuperer des infos dans la base |
select * from user
c'est pas mal non plus
Marsh Posté le 08-06-2002 à 20:53:24
tu peux expliquer rapidement ce que tu veux faire, ca me lourde de lire le code là
Marsh Posté le 08-06-2002 à 20:57:08
(et accessoirement j'essaie de comprendre pourquoi il colore la moitié des if / elseif )
Marsh Posté le 08-06-2002 à 20:57:31
Il veux avoir le nombre de femmes/hommes, les métiers et le nombre de gens qui ont 0-15ans, 15-25ans, 25-35 et +35
C vrai qu'il y a mieux que le bête select et de faire les stats à la main, mais bon, deja si il trie faut un index et ici faut pas trier
Marsh Posté le 08-06-2002 à 21:01:51
ba :
select COUNT(*) from user WHERE age > 87;
select COUNT(*) from user WHERE age > 77 AND age <= 87;
select COUNT(*) from user WHERE age > 67 AND age <= 77;
select COUNT(*) from user WHERE age <= 67;
select COUNT(*) FROM user GROUP BY metier;
select COUNT(*) FROM user GROUP BY sexe;
tu fous un index sur :
age
metier
sexe
et rulez
Marsh Posté le 08-06-2002 à 21:02:51
joce a écrit a écrit : ba : select COUNT(*) from user WHERE age > 87; select COUNT(*) from user WHERE age > 77 AND age <= 87; select COUNT(*) from user WHERE age <= 67; select COUNT(*) FROM user GROUP BY metier; select COUNT(*) FROM user GROUP BY sexe; tu fous un index sur : age metier sexe et rulez |
mets en place la wordlist pour java au lieu de faire du sql
Marsh Posté le 08-06-2002 à 21:04:03
joce a écrit a écrit : faut déjà que je débugge la wordlist actuelle |
Si y avait que ca
Marsh Posté le 08-06-2002 à 21:10:33
http://www.phpinfo.net/?p=articles [...] tion-mysql
Lis cet article, y a des trucs intéressants
Marsh Posté le 08-06-2002 à 21:25:08
joce a écrit a écrit : excellent article |
Ouai mais il a fallu crier, il persistait qu'il savait créer une clé primaire pour +de 4 milliards d'éléments sur 3 bits
Et bon, son histoire sur le null j'aime pas vraiment
Marsh Posté le 08-06-2002 à 21:27:35
Zion a écrit a écrit : Ouai mais il a fallu crier, il persistait qu'il savait créer une clé primaire pour +de 4 milliards d'éléments sur 3 bits Et bon, son histoire sur le null j'aime pas vraiment |
perso j'utilise pas les null, mais c'est vrai qu'il faut le voir du coté MySQL : faire une requète WHERE truc IS NULL n'a pas le même sens que WHERE truc='0'; (et ne renvoie pas les mêmes resultats ...)
Marsh Posté le 08-06-2002 à 21:44:16
mais sinon le conseil d'émuler les champ boolean en faisant un char(0) qui est soit '' soit null, c bon ou y'a une autre méthode ?
Marsh Posté le 08-06-2002 à 22:26:17
joce a écrit a écrit : ba : select COUNT(*) from user WHERE age > 87; select COUNT(*) from user WHERE age > 77 AND age <= 87; select COUNT(*) from user WHERE age > 67 AND age <= 77; select COUNT(*) from user WHERE age <= 67; select COUNT(*) FROM user GROUP BY metier; select COUNT(*) FROM user GROUP BY sexe; |
Coucou c'est remoi
J'ai avancé mais j'ai du mal avec les GROUP BY, j'arrive pas à recuperer toutes les valeurs, voila ce que je fais :
Code :
|
Ou ai je fait une erreur ?
Merci
Marsh Posté le 08-06-2002 à 22:30:45
Faudrait ptre refaire un mysql_fetch_array, ca irait mieux
Marsh Posté le 08-06-2002 à 22:33:53
mysql_fetch_array te renvoie UNE ligne (le tableau représentant toutes les cases de cette ligne). Donc faut boucler. Si tu rajoutes 'metier' dans le SELECT :
while ($array = mysql_fetch_array($req)) {
// traitement pour un métier
echo "il y a " . $array["count(*)"] . " personnes qui font le metier " . $array["metier"] . "<br>";
}
Marsh Posté le 08-06-2002 à 22:44:02
et puis si t'utilises $metier[0] autant utiliser mysql_fetch_row
Marsh Posté le 08-06-2002 à 23:14:48
Bon ben merci à tous, maitenant ça marche mille fois mieux ... Y a pas à dire j'utilisais vraiment une methode de bourrin !
Marsh Posté le 08-06-2002 à 23:43:37
Vaut toujours mieux laisser le travail au serveur de base de donnée ... Ils sont doté de query-ptimizer et de different truc d'optimisation qui font le boulot pour toi.
Marsh Posté le 09-06-2002 à 00:00:57
Vi mais moi j'ai pas accés au commande du serveur de BDD
Marsh Posté le 09-06-2002 à 08:25:36
Ce que je voulait dire c qu'il vaut mieux faire plusieurs
SELECT COUNT(*) FROM ... WHERE ...;
que de faire un SELECT * FROM ...;
et puis de compter toi meme les different trucs.
Marsh Posté le 08-06-2002 à 20:19:57
Bonjour,
J'suis pas un grand codeur et j'ai bcp de mal à trouver sur le web de la doc detaillée pour bien optimiser certaine requete et surtout celle qui va suivre.
Il s'agit de trier les infos d'une base de donnée contenant plus de 15000 noms. Ce que j'ai code c'est une requete tous ce qui se fait de plus bourrin car je ne sais pas vraiment faire autrement et evidemment elle est extrement longue à s'executer. Bref si vous pouviez me dire comment et surtout quelles commandes utiliser pour optimiser tout cela
Voila merci d'avance pour ceux qui m'aideront
Message édité par Stligar le 06-08-2002 à 20:29:58