Rendre une requête SQL plus rapide

Fermé
coeus Messages postés 3021 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 19 juin 2013 - 17 avril 2010 à 17:57
blux Messages postés 26863 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 13 mai 2025 - 17 avril 2010 à 21:06
Bonjour à tous !

Petite mise en situation...
Je programme un MMORPG. Mon problème concerne la "map" du jeu, qui est en trois dimensions. Donc chaque "case" ou "point" de référence possède une position sur trois axes (x, y et z).
Si on compte tous les points possibles sur la carte, on arrive à près de 2 millions de possibilités (1 800 000 pour être précis) dans la même table. J'ai besoin régulièrement d'aller chercher de l'information sur les différents points, et bien que chaque requête ne me retourne typiquement que 10 résultats environ, on se doute que sortir le résultat peut être long. En fait, en moyenne, une requête prend près de 0,8 seconde.
Considérant que je compte avoir des centaines, voire des milliers d'utilisateurs sur mon jeu, c'est énorme.

Quelqu'un aurait-il quelques conseils pour m'aider à rendre mes requêtes plus rapides ?

Jusque là, j'ai essayé de faire des subqueries pour d'abord pré-limiter le nombre de réponses possibles (en demandant, par exemple, de me sortir uniquement les espaces de la carte possédant le même point Z que la ville "capitale" du joueur) puis de faire la requête principale parmi ces résultats, mais c'est encore plus long. Je commence à considérer de diviser la table "map" en neuf tables (puisque l'axe Z n'a que neuf unités en tout), mais je voulais savoir s'il existait une autre solution auparavant.

Merci à tous !
A voir également:

2 réponses

Salut,

Les réponses génériques tournent assez souvent autour des indexes et de la suppression des sous-requêtes.
Néanmoins, la seule méthode que tu puisses suivre pour améliorer efficacement ton requêtage est de chercher de la documentation sur le tuning de ton système, de la lire intégralement et de l'assimiler (avec des exemples si besoin est).
0
blux Messages postés 26863 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 13 mai 2025 3 340
17 avril 2010 à 21:06
Salut,

peut-être revoir ton modèle de données...

Plus de tables avec moins de records ?

Des requêtes faites en prefetch ?
0