Je me heurte à un problème mineur d'optimisation de mes requètes :P
voici ma table:
nom | nb_lv | lv1 | lv2 | lv3 | lv4 | lv5 | lv6 |
Imaginons le cas suivant:
nom = Bob
nb_lv = 3
lv1 = 153segb
lv2 = 158gfag
lv3 = gfz51ge
lv4,5,6 = ''
actuellement je récupère à l'aide d'un select,nb_lv
ensuite je crée une requete en fonction de nb_lv que
je transmet à un select
ce qui me fait 2 requetes select pour une opération banale....
N'y a-t-il pas un moyen à l'aide de LIMIT et d'une autre fonction
de selectionner directement lv1,lv2,lv3 (soit les lvX remplis) et donc
de réduire le nombre de requetes à 1 ?
effectivement après m'être relus, c'est très vague ce que j'ai écrit :S
Toujours le même exemple mais plus précis cette fois ^^
La table:
nom | nb_lv | lv1 | lv2 | lv3 | lv4 | lv5 | lv6 |
les valeurs:
nom = Bob
nb_lv = 3
lv1 = 153segb
lv2 = 158gfag
lv3 = gfz51ge
lv4=''
lv5=''
lv6=''
a. 1ère requête SELECT récupère nb_lv
b. Ensuite je crée une requête qui va récupérer les nb_lv premiers
levels
(dans notres cas les 3 premiers lv ( lv1, lv2 et lv3 ) vu que
nb_lv = 3 )
SELECT lv1 lv2 lv3
=> 2 requêtes pour une opération assez simple :S
voila j'espère que mon problème parait plus clair maintenant ;)
Oui tu as répondu en partie à ma question, mais je souhaite quand même éviter au maximum les SELECT * (car dans ma vraie base je n'ai pas 6 lv mais beaucoup plus) ce qui ferrai une grande réponse de la part du server SQL et donc une réponse plus lente car plus de données à transmettre.
Pour info un select * n'est pas recommandé.
Mais souvent c'est plus interressant que de faire deux resuter
EN plus le select * est a proscrire surtout dans le cas des
des champs de type texte.
Fais un select champ1,champ2,champ3
A la place
Mais pour info un select count(*) est plus optimisé
que un select count(A)
Les bonnes pratiques ne sont pas a suivre a la lettre
et de toute maniere, tu utilises une requete optimisé
et ton programme n'est pas optimisé.
C'est un peu du gachis, il faut un tout.
Et il faut savoir ou optimisé.
Il faut optimisé, les 20% du programme
ou 80% du temps est passé.
Pour ta structure
de table
Je te propose 2 tables
detail de la table score
=======================
niveau score id_joueur
1 34 A
2 56 A
3 123 A
1 45 B