Gebruik je eerste suggestie. Die met offsets. Het is de "standaard" manier om paginering uit te voeren. Het zou een slecht idee zijn om de hele resultatenset in een sessie te zetten, aangezien elke gebruiker zijn eigen privékopie van de gegevens zou hebben. Als u prestatieproblemen ondervindt, kunt u altijd caching (memcache) toevoegen, wat alle gebruikers die toegang hebben tot de gegevens ten goede zal komen.
MySQL zal uw gegevens altijd op dezelfde manier opleveren. De enige manier waarop een record van pagina 1 op pagina 2 zou verschijnen, is als er een nieuw record wordt ingevoegd tussen de tijd dat de gebruiker van pagina 1 naar pagina 2 navigeert. Met andere woorden:u hoeft zich nergens zorgen over te maken.
Een bron is MySQL's geval is een soort aanwijzer die verwijst naar de resultatenset. U kunt dat dan manipuleren (gegevens rij voor rij ophalen, het aantal geretourneerde rijen tellen, enz.). Het is niet wereldwijd.