performance mySQL rang d'un enregistrement
7 messages • Page 1 sur 1
Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics
performance mySQL rang d'un enregistrement
Bonjour,
Quelle est la méthode la plus performante pour récupérer le rang d'un enregistrement dans une table classée selon un champ?
Par exemple la table (id,joueurid,score) contient 10000 joueurs
je voudrais récupérer le classement du joueurid x en fonction de son score (ORDER BY score DESC)?
Pour l'instant je récupère tous les scores classés du plus grand au plus petit et je cherche par dicotomie le score de mon joueur, n'y a t il pas une requête mySQL qui pourrait faire ça?
Merci
Quelle est la méthode la plus performante pour récupérer le rang d'un enregistrement dans une table classée selon un champ?
Par exemple la table (id,joueurid,score) contient 10000 joueurs
je voudrais récupérer le classement du joueurid x en fonction de son score (ORDER BY score DESC)?
Pour l'instant je récupère tous les scores classés du plus grand au plus petit et je cherche par dicotomie le score de mon joueur, n'y a t il pas une requête mySQL qui pourrait faire ça?
Merci
il faut faire une requete du genre :
a noter que le limit est important pour l'optimisation, d'autre part il est important que tu fasse des clefs sur les champs associées (joueurid et id), sinon ça resque d'etre trés lent.
si en plus tu peut rajouter un cas de selection en 'and' dans ta requete , et de preference avec un champ doté d'une clé, tu optimisera d'autant mieux .
- Code: Tout sélectionner
select * from scores, joueurs where scores.joueurid=joueurs.id order by score.score desc limit 10
a noter que le limit est important pour l'optimisation, d'autre part il est important que tu fasse des clefs sur les champs associées (joueurid et id), sinon ça resque d'etre trés lent.
si en plus tu peut rajouter un cas de selection en 'and' dans ta requete , et de preference avec un champ doté d'une clé, tu optimisera d'autant mieux .
wiwi a écrit:tu peux faire quelque chose comme ca par ex :
select score from table where joueurid=x
tu obtiens $score
puis :
select count(*) from table where score>$score
et tu obtiens le nombre de personne ayant un score plus eleve.
super! je vais tester ça avec un timer pour voir si j'y gagne mais je n'en doute pas une seconde!
merci à Tex aussi
-

George Abitbol - WRInaute accro

- Messages: 1923
- Inscription: Ven Juin 06, 2003 7:57
La même chose mais en une seule requête :
Fred
- Code: Tout sélectionner
SELECT COUNT( * ) + 1
FROM table a
INNER JOIN table b
ON b.id = $ton_id
WHERE a.score > b.score
Fred
7 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par Julien Coquet, expert certifié officiellement par Google Analytics.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Sortie officielle de GoogleStats v2.0 !
- Google au 4eme rang mondial en nb de visites
- Classement Interbrand 2006 : la percée de Google
- Gestion des langues et des sessions en PHP / MySQL
- Yahoo poursuit les propriétaires de 1763 noms de domaine
- Passage à l'heure d'été/hiver sur un forum phpBB
- GoogleStats : analyse temps réel des visites de Google sur votre site
- Liens sponsorisés : XiTi mesure Google Content
- Formation Google Analytics à Paris : 2 jours (formateur certifié Google Analytics)
- Stratégies financières sur l'évolution de l'architecture Google
Consultez la description détaillée des produits ou services de Google suivants : Google AdWords
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités





le forum