JeuWeb - Crée ton jeu par navigateur
Optimisation SQL - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Optimisation SQL (/showthread.php?tid=834)



Optimisation SQL - Anewa - 19-02-2007

Salut, c'est encore moi (h)

je me pose une petite question, vaut t'il mieu faire un champs ou plusieurs champs ??? (oui sa fait un peu con comme question, mais je m'explqiue par la suite)

Par exemple pour les ressources, je peux créer 5 champs (nourriture, bois, métal, acier, or) ou alors 1 champs ressources avec dedans nourriture-bois-métal-acier-or et je le gére le tout avec la fonction explode.

Je trouve la 2em solution un peu mieu, mais je sais pas si sa vaut le coup. Un gros champs est il plus adaptés que 5 petits champs ??

De plus une mise à jour avec MySQL est plus facile je n'ai qu'a faire ressource = ressource au lieu de nourriture = nourriture, bois = bois, ...

J'aimerai votre avis, Merci :good:


RE: Optimisation SQL - Seren - 19-02-2007

Le problème de ton champ multiple, tu vas le voir quand tu voudras faire des recherches.

Par exemple si tu veux selectionner tous les personnages qui n'ont plus de nourriture (pour les faire mourir de faim), lorsque tu vas faire ta recherche il va falloir ouvrir chaque champ, et chercher une sous chaîne. ça va être très couteux en terme de traitement et de temps.

Au final tu vas perdre plutôt que gagner.

Utilises les bases de données en séparant bien les attributs sinon ça sert à rien et autant utiliser un fichier.

(Et rien te garantit que d'utiliser explode/implode plutot que de chercher 5 champs est plus rapide. Au pif, je dirais même que c'est l'inverse.)


RE: Optimisation SQL - Anewa - 19-02-2007

arf un sadique lol, la truc c'est que ton exemple n'est pas adapté à mon jeu (un jeu de gestion). Et puis je ne ferais pas de MAJ général sur les ressources, dans mon cas j'ai l'impression que d'utiliser 1 seul champs est plus adaptés surtout pour les requêtes SQL

par exemple je remplace
mysql_query('UPDATE membre SET ration = ration + "'.$maj_ration.'", gold = gold + "'.$maj_gold.'", bois = bois + "'.$maj_bois.'", pierre = pierre + "'.$maj_pierre.'", acier = acier + "'.$maj_acier.'", hectare = hectare + "'.$maj_hectare.'", last_refresh = "'.$temps_actuel.'" WHERE id = "'.$_SESSION['id_membre'].'"') or die(mysql_error());

par
mysql_query("UPDATE membre SET ressources = ressources, last_refresh = '$now' WHERE id = '$id_membre'") or die(mysql_error());