JeuWeb - Crée ton jeu par navigateur
Optimisation de requetes ... - 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 de requetes ... (/showthread.php?tid=4391)



Optimisation de requetes ... - Unkof - 06-10-2009

Dans le cadre d'un requete de ce type :

SELECT Id,Nom,Prenom FROM habitants ORDER BY Nom LIMIT 10

Si le champ Nom n'est pas indexé, pensez-vous qu'il est préférable de l'indexer ?

Pensez-vous qu'il vaut mieux indexer tous les champs succeptibles d'être utiliser dans un ORDER BY ?

A première vu, ils préconisent de traiter les ORDER BY sur des index dans le manuel php à cette adresse :

http://www.manuelphp.com/mysql/order-by-optimisation.php

C'est une chose que je ne fais pas systématiquement, mais en lisant ca, j'en viens à me poser la question ?

Evidemment, dans un cadre "normal", genre 30 utilisateurs en simultanés, ce n'est pas très grave, mais dans le cadre d'un jeu sur lequel il pourrait y avoir plusieurs centaines de connectés en simultané, ca change la donne .. Confused

Vous en pensez quoi ?


RE: Optimisation de requetes ... - naholyr - 06-10-2009

C'est plutôt la doc de MySQL qu'il faut lire dans ce cas Wink
http://dev.mysql.com/doc/refman/5.4/en/query-speed.html

Pour ta question : oui, les index sont utiles dès qu'on interroge le champ : ORDER ou WHERE.
Le seul impact négatif des index est l'espace de stockage et le temps d'insertion. Si on indexe intelligemment ça ne pose absolument aucun problème, mais si on s'amuse à faire toutes les combinaisons d'index sur une table à 2M lignes, c'est totalement contre-productif évidemment Wink


RE: Optimisation de requetes ... - Unkof - 07-10-2009

Citation :mais si on s'amuse à faire toutes les combinaisons d'index sur une table à 2M lignes, c'est totalement contre-productif évidemment

Tu peux être plus explicite ?

On va dire qu'on a une table de 260000 rows, et une table de admettons 60 rows.
Les 2 tables sont très utilisées, on a je pense (tu m'arrêtes si y a un truc qui colle pas) autant d'intérêt à indexer bien sur les 2 tables, moins bien entendu la petite que la grande, parce que faire un order ou un where sur une table avec 60 rows ne pose pas de réel problème de performance.

Si on indexe la table de 260000 rows sur 5 ou 6 champs, mis à part la taille de l'index, ca optimisera quand même la vitesse des queries et des updates (dans cette table, je ne fais pas d'insert).

Evidemment, là dans ce cas, il n'y a pas d'insert, donc mis à part si y a un truc qui m'échappe, y a-t-il un problème à mettre 5 ou 6 champs en index mis à part la taille du fichier d'index ?

Dans la cadre d'une table de message privé d'un forum par exemple, il vaut mieux limiter les index au strict minimum, cette table pouvant contenir plusieurs centaines de milliers de rows, et ayant souvent autant d'insert que de select ... je suppose que tu parles de cas comme ca ?...


RE: Optimisation de requetes ... - Anthor - 08-10-2009

INSERT, UPDATE même combat au niveau des index.