08-02-2010, 09:26 AM
salut
merci pour vos réponses ;-)
merci pour vos réponses ;-)
08-02-2010, 09:26 AM
salut
merci pour vos réponses ;-)
08-02-2010, 10:25 AM
il faut juste placer les bons index, et faire les bonens requetes (l'ordre dans lequel tu fais tes jointures, et dans lequel tu mets tes clauses WHERE ont beaucoup d'importance! je suis passé d'un temps d'exécution de 5 secondes pour afficher une portion de 30 cases à 0.05 sec juste en changeant l'ordre dont je viens de parler
Je signale que je ne détiens pas la vérité unique et absolue, je peux me tromper. La critique peut aussi être constructive. Critiquez moi!
La quête d'Ewilan http://easy2hack.ma-soiree.be
08-02-2010, 10:56 AM
je vais tester l'odre dans les WHERE mais j'ai fais quelques tests
personnellement je suis : - à 0.087 sec pour 10x10 - à 0.29 sec pour 20x20 - à 1.85 sec pour 50x50 - à 6.90 sec pour 100x100 cela te semble correct ou encore optimisable? je ne veux pas afficher 100x100 mais 6.9 sec me parait bien long ... ta requete est elle dans un boucle genre for ($y = 0; $y <= 10; $y++) { for ($x = 0; $x <= 10; $x++) { ou fais tu autrement ? utilises tu les requetes préparées, les vues ? est ce que tu recupere coordonnée par coordonnée ou par ligne de coordonnées (WHERE x BETWEEN) ? merci encore pour tes conseils
08-02-2010, 11:34 AM
En théorie, si on a un bon SGBD il est censé s'occuper tout seul de faire les jointure avant les autres clauses WHERE (du moins c'est se qu'on nous a enseigné)
J'ai jamais essayé de voir si mysql était optimisable de se coté là, faudra que je test. Mais 0.087 seconde pour 10*10 je trouve ça cher payé. Tu fais une seule grosse requête et tu travail dans un tableau après? Sinon moi j'ai bien un while imbriqué... C'est dur de dire si c'est optimisable sans connaitre le code, la bd, et le mecanisme que tu utilise ^^
Dévotion, jeu multijoueur gratuit par navigateur de stratégie et de conquête
The Magic Institute, le jeu de magie médieval fantastique gratuit en ligne Rapture Studio : créateur de divertissement pour tous JePolitique.fr - débattons ensemble JécrisLaConstitution.fr - ne laissons pas les Hommes aux pouvoirs écrire les règles du pouvoir Je Deviens Citoyen (Association à but non lucratif)
08-02-2010, 11:48 AM
(Modification du message : 08-02-2010, 11:51 AM par NicoMSEvent.)
JAMAIS mettre une requete dans une boucle!!! :p
utilise un between! (moi j'utilise un IN, comme je n'utilise pas de vue "carrée", avec un masque qui me sort la forme que je veux) tu peux poster des morceaux de code, et la structure de ta BDD, je pourrai analyser ça et p-e t'aiguiller vers une bonne solution
Je signale que je ne détiens pas la vérité unique et absolue, je peux me tromper. La critique peut aussi être constructive. Critiquez moi!
La quête d'Ewilan http://easy2hack.ma-soiree.be
08-02-2010, 12:43 PM
je pense que ma méthode peut largement être optimisée, mais comme Nico, ne lance pas des requêtes en boucle
pour ma part j'utilise une boucle pour construire la requete (ce que je mets dans le "in") et après seulement je lance la requête finalisée
08-02-2010, 01:00 PM
(Modification du message : 08-02-2010, 01:22 PM par NicoMSEvent.)
@Ter Rowan -> j'ai mon "masque" dans une table (genre : 0,0 représente la case ou le personnage est, -1,0 une case a coté, 0,+1 une case en dessous, etc...)
je fais une jointure comme ceci : Code : $req_constr_plt='SELECT m.id '.
Je signale que je ne détiens pas la vérité unique et absolue, je peux me tromper. La critique peut aussi être constructive. Critiquez moi!
La quête d'Ewilan http://easy2hack.ma-soiree.be
08-02-2010, 02:24 PM
ah c'est pas mal comme technique
C'est limite plus "sexy" qu'un "in()" par contre je me demandais (avant même ton exemple d'ailleurs) si il y a un intérêt à créer un id en plus des positions x y (voire z,t ,...) pour la table "carte" id / x / y / type / .... plutôt que x / y / type / .... dans les deux cas il faut je pense indexer sur x / y mais quel est l'intérêt et l'utilisation de l'id ?
08-02-2010, 02:40 PM
(08-02-2010, 02:24 PM)Ter Rowan a écrit : par contre je me demandais (avant même ton exemple d'ailleurs) si il y a un intérêt à créer un id en plus des positions x y (voire z,t ,...) pour la table "carte" tu te sert de l'id ou pas? pour ma part je le garde car il me sert dans: - les parametres d'url (je trouve ca plus propre que de passer x et y) - dans ma requete Code : query("SELECT c FROM map WHERE (x BETWEEN $debutx AND $finx) AND (y BETWEEN $debuty AND $finy) ORDER BY y ASC, id ASC") avec mon between je suis obligé de trier les resultat par y et par id (ordre dans lequel les cases ont été crée, cela m'evite de trier par x et par y....) faut que j'essaie avec un seul index pour voir...
08-02-2010, 03:10 PM
je me serts des ID pour stocker les positions des personnages (dans la table perso, j'ai l'ID de la case), les pnj, les magasins, les autes, ...
ce n'est certainement p-e pas la meilleure des solutions, mais pour l'instant ça me convient Dans mes URL, plutot que de dire : "je me déplace vers la case XYZ", je préfère dire "je vais vers le sud-ouest". Il y a moins de vérification point de vue possibilité de triche ^^
Je signale que je ne détiens pas la vérité unique et absolue, je peux me tromper. La critique peut aussi être constructive. Critiquez moi!
La quête d'Ewilan http://easy2hack.ma-soiree.be |
|
Sujets apparemment similaires… | |||||
Sujet | Auteur | Réponses | Affichages | Dernier message | |
Polymorphisme dans une BDD / clé étrangère vers plusieurs tables | Monsieur | 6 | 4 708 |
15-02-2014, 01:27 AM Dernier message: Arnadus |
|
faire une grosse requete ou plusieurs petites ? | php_addict | 18 | 9 717 |
31-01-2011, 10:07 AM Dernier message: niahoo |
|
Une grosse table ou plusieurs avec jointures | php_addict | 19 | 10 068 |
17-05-2010, 09:50 PM Dernier message: atra27 |
|
Insertion SQL sur plusieurs tables | Ekilio | 9 | 4 538 |
23-09-2009, 04:28 PM Dernier message: Ekilio |
|
Update sur plusieurs tables | Rouge | 26 | 7 339 |
23-12-2008, 01:19 PM Dernier message: Sephi-Chan |