Para 500 registros, la eficiencia probablemente no sea un problema, pero si tiene millones de registros, puede ser ventajoso usar una cláusula WHERE para seleccionar la página siguiente:
SELECT *
FROM yourtable
WHERE id > 234374
ORDER BY id
LIMIT 20
El "234374" aquí es la identificación del último registro de la página anterior que ha visto.
Esto permitirá utilizar un índice en la identificación para encontrar el primer registro. Si lo usa LIMIT offset, 20
, podría encontrar que se vuelve más y más lento a medida que avanza hacia el final. Como dije, probablemente no importará si tiene solo 200 registros, pero puede marcar la diferencia con conjuntos de resultados más grandes.
Otra ventaja de este enfoque es que si los datos cambian entre las llamadas, no perderá registros ni obtendrá un registro repetido. Esto se debe a que agregar o eliminar una fila significa que el desplazamiento de todas las filas después de que cambia. En su caso, probablemente no sea importante: supongo que su grupo de anuncios no cambia con demasiada frecuencia y de todos modos nadie se daría cuenta si reciben el mismo anuncio dos veces seguidas, pero si está buscando la "mejor manera" entonces esto es otra cosa a tener en cuenta al elegir qué enfoque usar.
Si desea utilizar LIMIT con un desplazamiento (y esto es necesario si un usuario navega directamente a la página 10000 en lugar de desplazarse por las páginas una por una), puede leer este artículo sobre búsquedas de última fila para mejorar el rendimiento de LIMIT con un gran compensar.