MYSQL et expression LIMIT

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

yann214
WRInaute impliqué
WRInaute impliqué
 
Messages: 366
Inscription: Jeu Nov 17, 2005 8:59

MYSQL et expression LIMIT

Message le Mar Juin 13, 2006 14:03

Salut,

Est-ce que l'expression LIMIT dans un SELECT permet de gagner en performances ?

Lorsqu'on veut afficher 20 posts d'un forum (à partir du 50e) par exemple, vaut-il mieux faire :

- un "SELECT post_id FROM posts.db WHERE cat_id=2" puis afficher les 20 premiers enregistrements à partir de l'enregistrement 50 ?

- un "SELECTpost_id FROM posts.db WHERE cat_id=2 LIMIT 50,20" et afficher tous les enregistrements ?

Merci !!!


e-kiwi
Modérateur
Modérateur
 
Messages: 13854
Inscription: Mar Déc 23, 2003 9:04

Message le Mar Juin 13, 2006 14:18

solution 2 :)

yann214
WRInaute impliqué
WRInaute impliqué
 
Messages: 366
Inscription: Jeu Nov 17, 2005 8:59

Message le Mar Juin 13, 2006 14:53

le problème c'est qu'avec la 2e solution, on n'a pas le nombre d'enregistrements total pour déterminer le nombre de pages qu'on va avoir.

Il va falloir faire une 2e requete pour générer les numéros de pages alors qu'avec la première solution on avait tout...

Compte tenu de cet élément, la 2e solution est-elle toujours la meilleure ?


e-kiwi
Modérateur
Modérateur
 
Messages: 13854
Inscription: Mar Déc 23, 2003 9:04

Message le Mar Juin 13, 2006 15:04

>> on n'a pas le nombre d'enregistrements total pour déterminer le nombre de pages qu'on va avoir

c'etait pas précisé :)
faudrait regarder comment fait phpmyadmin, car qd il fait une requete affichant les 30 premiers resultats, il te donne le total. y a ptetre une astuce cachée


hipopulation
WRInaute impliqué
WRInaute impliqué
 
Messages: 346
Inscription: Mer Juil 28, 2004 10:14

Message le Mar Juin 13, 2006 15:21

Une requete avec COUNT pour avoir le total?


david96
WRInaute accro
WRInaute accro
 
Messages: 1407
Inscription: Dim Aoû 28, 2005 21:56

Message le Mar Juin 13, 2006 15:26

Lance d'abord t'a requête :
$requete="SELECT bidule_id FROM bidule";
$verification_requete=mysql_query($requete,$taconnexion);
$nombre_total=mysql_num_rows($verification_requete);
echo "total : ".$nombre_total;

Bref dans ta variable $nombre_total, tu as le nombre exacte des enregistrements voulus selon ta requete.

Ensuite avec des if et des elseif tu devrais trouver tout seul ;-)

Y'a surement d'autres solutions, ce n'est pas ce qui manque avec PHP
:lol:


e-kiwi
Modérateur
Modérateur
 
Messages: 13854
Inscription: Mar Déc 23, 2003 9:04

Message le Mar Juin 13, 2006 15:30

oui mais bon ca fait 2 requetes ca, c'est pas tres optmisé :) autant qu'il garde sa méthode n°1


Bacteries
WRInaute accro
WRInaute accro
 
Messages: 1333
Inscription: Jeu Mai 27, 2004 13:04

Message le Mar Juin 13, 2006 15:35

Bah tout dépend de la taille de la requête; si ça te renvois 500 enregistrements faire deux requêtes est ptéte pas si mauvais. (à tester cependant)

yann214
WRInaute impliqué
WRInaute impliqué
 
Messages: 366
Inscription: Jeu Nov 17, 2005 8:59

Message le Mar Juin 13, 2006 15:39

ouiap c'est une requette assez lourde, mais la lancer 2 fois c'est 2 fois plus lourd... juste pour les numéros de pages...

Je crois que je suis obligé de passer par la solution 1...


Bacteries
WRInaute accro
WRInaute accro
 
Messages: 1333
Inscription: Jeu Mai 27, 2004 13:04

Message le Mar Juin 13, 2006 15:44

Un count(*) c'est pas lourd.

yann214
WRInaute impliqué
WRInaute impliqué
 
Messages: 366
Inscription: Jeu Nov 17, 2005 8:59

Message le Mar Juin 13, 2006 15:54

même si le SELECT est compliqué ?


e-kiwi
Modérateur
Modérateur
 
Messages: 13854
Inscription: Mar Déc 23, 2003 9:04

Message le Mar Juin 13, 2006 16:17

yann214, tu ne peux pas faire le test pour savoir lequel est le plsu rapide ? (à ton chrono, top départ :) )


Bacteries
WRInaute accro
WRInaute accro
 
Messages: 1333
Inscription: Jeu Mai 27, 2004 13:04

Message le Mar Juin 13, 2006 18:58

yann214 a écrit:même si le SELECT est compliqué ?


A mona vis si t'as pas de jointure ça passera sans problème.


lupuz
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 207
Inscription: Mer Mar 15, 2006 23:41

Message le Mar Juin 13, 2006 22:21

Je confirmes sur une table avec beaucoup d'enregistrement faire un select count(*) et un select ... Limit est bien plus rapide qu'une requete select simple.

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Mer Juin 14, 2006 7:08

lupuz a écrit:Je confirmes sur une table avec beaucoup d'enregistrement faire un select count(*) et un select ... Limit est bien plus rapide qu'une requete select simple.

logique

MYSQL et expression LIMIT

Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités