Optimisation mysql et LIMIT

WRInaute passionné
A l'origine, je veux sélectionner les lignes pour id=1051 à 1251 en ordonnant selon mon champ time

J'ai donc essayer ça : SELECT * FROM stx_visites ORDER BY time desc LIMIT 1051,200

Problème : ça marche pas, cela me retourne n'importe quoi.

En revanche, ceci : SELECT * FROM stx_visites WHERE '1051'<=id AND id<='1251' ORDER BY time desc LIMIT 200
fonctionne parfaitement.

Quel est le plus rapide (id est une clé primaire autoincrémentée) ?

Il y a un truc que j'ai raté dans le limit?

Merci!
 
WRInaute passionné
Code:
SELECT * FROM stx_visites WHERE id BETWEEN '1051' AND '1251'
ORDER BY time DESC

Pour un segment donnée dans ta base, mieux vaux utiliser BETWEEN, question rendement c'est mieux optimisé que LIMIT.

Voili, voilou ! :)
 
WRInaute impliqué
xTrade a dit:
A l'origine, je veux sélectionner les lignes pour id=1051 à 1251 en ordonnant selon mon champ time

J'ai donc essayer ça : SELECT * FROM stx_visites ORDER BY time desc LIMIT 1051,200

Problème : ça marche pas, cela me retourne n'importe quoi.

En revanche, ceci : SELECT * FROM stx_visites WHERE '1051'<=id AND id<='1251' ORDER BY time desc LIMIT 200
fonctionne parfaitement.

Quel est le plus rapide (id est une clé primaire autoincrémentée) ?

Il y a un truc que j'ai raté dans le limit?

Merci!

Ta 1ère requête ne fonctionne pas car toute ta table est ordonnée selon ton champ time, et le limit s'applique non pas au champ id mais aux résultats 1051 à 1251 déjà réordonnés selon "time".
 
WRInaute impliqué
De plus LIMIT 1051,200 cela veut dire de la position 1051 a 1251 dans les resultats de ta requete

A+
 
WRInaute passionné
Tilt a dit:
Ta 1ère requête ne fonctionne pas car toute ta table est ordonnée selon ton champ time, et le limit s'applique non pas au champ id mais aux résultats 1051 à 1251 déjà réordonnés selon "time".

Ah, ok, j'aurais pu chercher longtemps!

Quand au BETWEEN, damned, mon bouquin n'en parle même pas 8O

Merci!
 
WRInaute passionné
xTrade a dit:
Quand au BETWEEN, damned, mon bouquin n'en parle même pas 8O

Merci!

Hé bé, c'est une grave omission dit dont ! 8O

Sans déc, la requête que je t'ai faite s'adapte carrément à ta demande, les LIMIT c'est bien, mais pas super optimisé pour ce genre de requête ;-)
 
WRInaute passionné
david96 a dit:
Sans déc, la requête que je t'ai faite s'adapte carrément à ta demande, les LIMIT c'est bien, mais pas super optimisé pour ce genre de requête ;-)

Oui, je viens de l'intégrer à cet endroit et à d'autres!
Cela marche pour tous les types je suppose?
 
Discussions similaires
Haut