Optimisation requêtes SQL
Hors ligneRevan26914 Le 23/07/2009 à 21:45 Profil de Revan26914 Configuration de Revan26914

Bonsoir,

J'ai lu l'article (très intéressant d'ailleurs) traitant des optimisations de requêtes:

http://www.vulgarisation-informatique.com/optimiser-mysql.php


Concernant le BETWEEN, qui semble vraiment plus performant que le LIMIT, un point m'intrigue:

Le seul inconvénient de cette méthode est que si vous supprimez par exemple un membre dont l'id est situé entre ces deux valeurs, vous ne récupèrerez plus que 19 enregistrements au lieu de 20

N'y a-t-il pas une méthode pour résoudre ce problème ? C'est en effet très embêtant si, dans le cadre d'un forum, on supprime beaucoup de topics à la suite. On se retrouverait ainsi avec une page qui ne contient plus que quelques topics...



Merci d'avance,

Revan
--
La vérité est ailleurs...
Hors ligneTaffeur95 Le 24/07/2009 à 10:16 Profil de Taffeur95 Configuration de Taffeur95

Salut,
Je pense que la seule solution dans ce cas sera d'avoir un autre champ indexé sur lequel travailler, mais lequel...?.
Un champ Id sera généralement auto incrémenté et il est impensable de renommer tous les enregistrements de ta table à chaque suppression...
Hors ligneRevan26914 Le 25/07/2009 à 11:48 Profil de Revan26914 Configuration de Revan26914

Salut,

Comme tu le dis, il est impensable de renommer chaque ID à chaque suppression.

N'y a-t-il pas un moyen pour exclure de la requête tous les ID effacés ?
--
La vérité est ailleurs...
Hors ligneRevan26914 Le 29/07/2009 à 22:55 Profil de Revan26914 Configuration de Revan26914

J'ai une idée:

Utiliser une requête SQL de type COUNT pour compter le nombre d'id valides. Ensuite on fait la différence avec le nombre de messages que l'on veut afficher. Il ne reste plus qu'à additionner tout ça au nombre de message à afficher.

Mais la question est maintenant: est-ce toujours plus intéressant en terme de performence d'utiliser BETWEEN plutôt que LIMIT ?
--
La vérité est ailleurs...
Hors ligneAnthony Le 30/07/2009 à 10:07 Profil de Anthony Configuration de Anthony

Fou du volant
Salut

Merci de m'avoir contacté en PV au sujet de ton topic, c'est vrai que j'ai peu de temps malgré les vacances pour passer sur le forum et y lire les topics ;)

J'utilise personnellement cette solution sur ce forum. Pour pallier au fait des topics supprimés, je fais un UPDATE de tous les ID plus récents, c'est à dire qu'à chaque fois que je supprime un topic, sa position crée un "trou". Tous les topics plus récents ont leur position décrémentée de 1, et le tour est joué.

L'inconvénient de cette méthode est que si tu supprimes un topic créé au tout début, tu dois faire un UPDATE sur le nombre de topics de ta rubrique, ce qui peut être lent, m'enfin normalement tu n'es pas censé supprimer des topics ultra vieux, donc ça se limite en général grand maximum à un UPDATE sur 100 topics, ce qui est plutôt rapide ;)

Dans tous les cas, le LIMIT est à proscrire absolument. Tu ne le verras pas au début de la création de ton forum, mais au fur et à mesure que tu vas créer des topics la lenteur va devenir conséquente et ton serveur devra être surdimensionné pour faire tourner le forum
--

Hors ligneRevan26914 Le 31/07/2009 à 01:39 Profil de Revan26914 Configuration de Revan26914

Salut Anthony ,

Merci pour ta réponse^^

Je vais donc mettre en place tout ça sur mon forum



@+

Revan
--
La vérité est ailleurs...
Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels