begin process at 2012 05 26 22:57:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

MySQL

 > 

Requêtes

 > 

Optimisation : Un select et un autre select en fonction de la réponse du premier


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Optimisation : Un select et un autre select en fonction de la réponse du premier

jeudi 28 septembre 2006 à 23:19:10 | Optimisation : Un select et un autre select en fonction de la réponse du premier

Filipe35

Bonjour à tous

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 ?

Merci de vos réponses

++
Filipe



__________________________________________________
[ Lien ] - Le site sur ogame de référence !
[ Lien ] - Le générateur de signatures 100% Gratuit
samedi 30 septembre 2006 à 12:11:48 | Re : Optimisation : Un select et un autre select en fonction de la réponse du premier

nhervagault

Administrateur CodeS-SourceS
Salut Peux-tu parler plus precisment? Moi, avoir pas toutr compris. ;-) Je pense que ta table est mal faite tout simplement. Si je comprends (a travers une boule de cristal) Tu veux recuperé la valeur du champs lvl 3 si nblvl = 3 Je ne comprends pas trop l'interets de deux requetes. ecris ta premiere et ta deuxieme requete Précise ton post. Car c'est trop vague lvi 4 si nblvl = 4
samedi 30 septembre 2006 à 12:25:05 | Re : Optimisation : Un select et un autre select en fonction de la réponse du premier

Filipe35

Salut

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 ;)

++

Filipe


__________________________________________________
[ Lien ] - Le site sur ogame de référence !
[ Lien ] - Le générateur de signatures 100% Gratuit !
samedi 30 septembre 2006 à 14:19:55 | Re : Optimisation : Un select et un autre select en fonction de la réponse du premier

nhervagault

Administrateur CodeS-SourceS
Re : Je comprends toujours pas. Select * from matable where nom= 'bob' Ensuite c'est au programme de géré while ( i
samedi 30 septembre 2006 à 17:51:33 | Re : Optimisation : Un select et un autre select en fonction de la réponse du premier

Filipe35


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.



__________________________________________________
[ Lien ] - Le site sur ogame de référence !
[ Lien ] - Le gén&#
samedi 30 septembre 2006 à 18:28:19 | Re : Optimisation : Un select et un autre select en fonction de la réponse du premier

nhervagault

Administrateur CodeS-SourceS
Salut C'est bien ce que j'ai dis au depart c'est que ta base est mal faite. Et tu aurais pu mettre que tu ne voulais pas utiliser de select * pour eviter de me creuser la tete a comprendre la question. Alors tu veux Que si tu nb = 3 3 champs .. si nb 4 4 champs. C'est un peu tordu. La solution la plus propre est de refaire ta table joueur id nom niveau score niveau score id_joueur et faire une requete du style select joueur.*, score.* from joueur inner join score on joueur.id = score.id_joueur --> un resultat joueur nb level score A 3 1 3 A 3 2 10 A 3 3 45 Donc dans ton prog il te reste qu'a lire les difrent enregistrement et à la mettre dans un tableau voila
dimanche 1 octobre 2006 à 01:09:11 | Re : Optimisation : Un select et un autre select en fonction de la réponse du premier

Filipe35

Je ne vois pas ce qu'il y a de tordu oO

J'interroge ma base pour savoir combien de variables je dois récupérer à l'aide d'une autre requête. (une certaines logique en somme)

Mais avec la lecture de tes réponses, et autres textes que j'ai lus par la suite, il semblerait que MySql ne pense pas pareil ^^

J'ai vu aussi que les SELECT * étaient déconseillés oO

Sinon peux-tu être plus précis sur la manière de recréer mes tables ?

Merci de tes réponses et d'accorder de ton temps à mon problème.
dimanche 1 octobre 2006 à 14:25:13 | Re : Optimisation : Un select et un autre select en fonction de la réponse du premier

nhervagault

Administrateur CodeS-SourceS
Salut 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 Voila
lundi 2 octobre 2006 à 17:52:34 | Re : Optimisation : Un select et un autre select en fonction de la réponse du premier

Filipe35


Merci bien, je vais essayer d'appliquer tout ça ;)



__________________________________________________
[ Lien ] - Le site sur ogame de référence !
[ Lien ] - Le gén&#


Cette discussion est classée dans : fonction, select, nb, optimisation, lv


Répondre à ce message

Sujets en rapport avec ce message

return cursor, select en parametre.... [ par abdoulax ] select mafunction( (select * from matable where item>50) );Est-il possible de passer une requête en paramètre d'une fonction stockée?Cette fonction st Debutant C# utilisant MySQL [ par olibara ] BonjourJ'hesite entre le forum SQL et le Forum C#Je poste donc dans les deuxJ'ai un petit probleme conceptuel de débutant en C# et concernant l'update Problème avec champs crée dans requête SELECT [ par sebix ] Bonjour à tous,J'ai une requete SELECT ou je crée un champs en focntion de la valeur de deux autres champs :SELECT t.*, NB_J  = casewhen EXPRESSION_DU procedure select [ par abdoulax ] Bonjour,Je suis en train de faire un projet oracle pour mes études. Ce projet mélange du php avec une base oracle. Lors d'un bilan en cours de projet help svp [ par melleweb ] je cherche une fonction de manipulation des chaines de caractères en pl/sql ou sql pareil a cet exemple:fonction_recherchée('salut tout le monde','mon helr please [ par melleweb ] je cherche une fonction de manipulation des chaines de caractères en pl/sql ou sql pareil a cet exemple:fonction_recherchée('salut tout le monde','mon Génération de graphiques [ par pillsmen ] Bonjour à tous,Mon problème concerne la génération d'un graphique dans un état sous ACCESS.On va commencer par le commencement ^^, je pense qu'un exem Problème avec DateDiff [ par Chatbour ] Salut à tous,j'ai la requête suivante :SELECT DateDiff("j", #02-06-2007#, #06-04-2004#)FROM matable;l'erreur : "Appel de procédure incorrect"j'ai test Conversion de dates [ par Chatbour ] Salut à tous je voudrais savoir s'il existe une fonction Access qui convertie les date à l'anglaise (#mois-jour-année#) au format français (#jour-mois Erreur parametrage de clause SELECT [ par zen69 ] Bonjours à tous!J'ai un problem ici avec une Proc Stockée que je suis en train de construire.WHILE (@loop     BEGIN        SET @fld_list = @fld_list +


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,733 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales