Pour 500 dossiers de l'efficacité est probablement pas un problème, mais si vous avez des millions de dossiers alors il peut être avantageux d'utiliser une clause where pour sélectionner la page suivante:
SELECT *
FROM yourtable
WHERE id > 234374
ORDER BY id
LIMIT 20
Le "234374" ici est l'id du dernier enregistrement de l'précédents page affichée.
Cela permettra à un indice sur l'id pour être utilisé pour rechercher le premier enregistrement. Si vous utilisez LIMIT offset, 20
vous pourriez trouver qu'il devient plus lent et plus lent que vous page vers la fin. Comme je l'ai dit, il ne sera probablement pas d'importance si vous avez seulement 200 enregistrements, mais il peut faire une différence avec les plus grands ensembles de résultats.
Un autre avantage de cette approche est que si les modifications de données entre les appels que vous ne manquerez pas de dossiers ou d'obtenir un enregistrement répété. C'est en raison de l'ajout ou de la suppression d'une ligne signifie que le décalage de toutes les lignes après il change. Dans votre cas, c'est probablement pas important - je suppose que vos annonces ne change pas trop souvent et de toute façon, ne serait pas d'avis, si ils ont la même annonce deux fois de suite, mais si vous êtes à la recherche de la "meilleure façon", alors c'est une autre chose à garder à l'esprit lors du choix de l'approche à utiliser.
Si vous ne souhaitez LIMITE d'utilisation avec un décalage (et c'est nécessaire si un utilisateur accède directement à la page de 10000 au lieu de le feuilleter les pages une par une) puis vous pouvez lire cet article sur la fin de la ligne des recherches pour améliorer les performances de la LIMITE avec un grand décalage.