Para 500 registros, a eficiência provavelmente não é um problema, mas se você tiver milhões de registros, pode ser vantajoso usar uma cláusula WHERE para selecionar a próxima página:
SELECT *
FROM yourtable
WHERE id > 234374
ORDER BY id
LIMIT 20
O "234374" aqui é o ID do último registro da página anterior que você visualizou.
Isso permitirá que um índice no id seja usado para encontrar o primeiro registro. Se você usar, LIMIT offset, 20
poderá descobrir que fica cada vez mais lento conforme você avança no final. Como eu disse, provavelmente não importa se você possui apenas 200 registros, mas isso pode fazer a diferença com conjuntos de resultados maiores.
Outra vantagem dessa abordagem é que, se os dados mudarem entre as chamadas, você não perderá os registros nem obterá um registro repetido. Isso ocorre porque adicionar ou remover uma linha significa que o deslocamento de todas as linhas após a alteração. No seu caso, provavelmente não é importante - acho que seu pool de anúncios não muda com muita frequência e, de qualquer maneira, ninguém notaria se eles obtivessem o mesmo anúncio duas vezes seguidas - mas se você estiver procurando o "melhor caminho" isso é outra coisa a ter em mente ao escolher qual abordagem usar.
Se você deseja usar LIMIT com um deslocamento (e isso é necessário se um usuário navega diretamente para a página 10000 em vez de paginar pelas páginas uma por uma), você pode ler este artigo sobre pesquisas de linhas atrasadas para melhorar o desempenho de LIMIT com uma grande Deslocamento.