[Résolu] Optimisation du nombre de requêtes 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 : [Résolu] Optimisation du nombre de requêtes SQL (/showthread.php?tid=2052) |
[Résolu] Optimisation du nombre de requêtes SQL - Julios54 - 17-04-2008 Bonsoir (ou bon matin), voila, après avoir avancé un peu dans la création de mon premier jeu en PHP, une question me trotte dans la tête ^^ En effet, j'utilise énormément de requêtes SQL (à mon goût) pour l'affichage de mes pages. Grossomodo, j'ai entre 20 et 30 requêtes par page. Tout est codé en POO, avec un modèle MVC (à ma sauce, et je ne suis pas très bon cuisinier lol). En fait, au début de ma page principale, je récupère toutes les données dont j'ai besoin comme le personnage du joueur, sa race, sa classe, la carte, la région et la zone ou se trouve le personnage... Bref, pour chacune des données dont j'ai besoin, j'effectue déjà 2 requêtes (1 pour savoir si la requête retourne un résultat, et l'autre pour récupérer les valeurs dans la Table). Sans compter les autres infos dont j'ai besoin pour afficher un inventaire, effectuer des actions ,etcetera. Pour en revenir a la question que je me posais ^^ Est-ce-que 20 a 30 requetes est normal ou alors il faut que j'optimise mes requetes ? Si oui, comment faire ? En mettant en cache les données qui ne changent jamais (comme la race du personnage ou sa classe) par exemple ? Merci de votre aide RE: Optimisation du nombre de requetes SQL ? - Sephi-Chan - 17-04-2008 Bonjour, Effectivement 20 à 30 requête c'est beaucoup, surtout que je pense qu'il y en a un paquet d'inutiles. Plutôt que de faire une requête qui indique s'il y a un résultat, tu peux directement faire ta requête et utiliser mysql_num_rows($handle) ou mysql_affected_rows(). J'édite une fois à l'école. Sephi-Chan RE: Optimisation du nombre de requetes SQL ? - Dolphy - 17-04-2008 Je ne sais pas comment est organisé ta BDD mais quand je lis ça : Citation :En fait, au début de ma page principale, je récupère toutes les données dont j'ai besoin comme le personnage du joueur, sa race, sa classe, la carte, la région et la zone ou se trouve le personnage... Je pense que certaines infos ne varient pas souvent (par exemple la race et la classe du joueur) donc pourquoi ne pas utiliser une session, comme ça tu charge les infos une bonne fois pour toute à l'identification du joueur et c'est réglé. Au besoin après tu modifies les infos dans la session si besoin. Ca fait déjà une économie de quelques requêtes je pense. RE: Optimisation du nombre de requetes SQL ? - Julios54 - 17-04-2008 Donc j'ai suivi vos conseils, au lieu de recuperer le nombre de ligne d'un resultat, j'ai utilisé la fonction mysql_num_rows, ce qui m'a deja fait economiser moitié moins de requetes. Et ensuite, j'ai mis les objets qui ne changeaient pratiquement jamais dnas des variables de session, ce qui me fait economiser encore quelques requetes Jen suis a environ 10 requetes maintenant, mais je pense que je vais devoir optimiser mon code plus que ca, car je n'en suis qu'au debut de mon projet et les requetes ne vont cesser d'augmenter .. En tout cas merci de vos conseils RE: Optimisation du nombre de requetes SQL ? - Eluox - 17-04-2008 Rassur moi, tu fait pas de requetes dans des boucles ? RE: Optimisation du nombre de requetes SQL ? - Julios54 - 17-04-2008 Non je te rassure ^^ En fait, pour chaque table dans ma base de données, j'ai une classe qui lui correspond, par exemple si je veux recuperer mon personnage en fonction de son id, je fais Personnage::get_personnage_by_id($id), ce qui fiat un acces a la bdd, et en fait je fais ca pour tout ce dont j'ai besoin. Par exemple, un Objet appartient a un Type_objet. Pour connaitre le type de l'objet, je recupère mon objet, ensuite je recupere son type grace au type_id que j'ai recupéré dans objet. Ca fait 2 requetes, donc je vais essayer de rassembler ce type de requete en une seule avec une jointure, je gagnerais plusieurs requetes grace a ca. RE: Optimisation du nombre de requetes SQL ? - Eluox - 17-04-2008 Au passage, avoir 10 requêtes par pages, c'est pas non plus la fin du monde, au moin faut les optimiser Du genre si tu recupère que un id, fait pas un select *, ect RE: Optimisation du nombre de requetes SQL ? - Julios54 - 17-04-2008 ^^ oui a ce niveau la c'est optimisé, et maintenant, j'ai fait des jointures, et la je tombe a 5 à 10 requetes par pages Merci de vos conseils RE: Optimisation du nombre de requetes SQL ? - keke - 18-04-2008 Coucou ! Cela dit, parfois 2 requêtes valent mieux qu'une. Si tu utilises ORACLE, tu as des outils d'administration qui permet de localiser les tables, les requêtes qui sont les plus fréquentes et les plus gourmandes. N'hésites pas à utiliser des indexes sur des tables qui varient peu (la liste des espèces de ton jeu). Kéké. |