Použijte svůj první návrh. Ten s offsety. Je to "standardní" způsob stránkování. Vložení celé sady výsledků do relace by byl špatný nápad, protože každý uživatel by měl svou vlastní soukromou kopii dat. Pokud narazíte na problémy s výkonem, můžete vždy přidat mezipaměť (memcache), což bude přínosem pro všechny uživatele přistupující k datům.
MySQL vždy povede k vašim datům stejným způsobem. Jediný způsob, jak by se záznam ze stránky 1 objevil na stránce 2, je vložit nový záznam mezi okamžikem, kdy uživatel přejde ze stránky 1 na stránku 2. Jinými slovy:nemáte se čeho obávat.
Zdroj je v případě MySQL typ ukazatele, který ukazuje na sadu výsledků. S tím pak můžete manipulovat (načítání dat řádek po řádku, počítání počtu vrácených řádků atd.). Není globální.