LIMIT
также имеет опцию смещения: LIMIT offset, count
, например:
SELECT * FROM `table` ORDER BY `cid` ASC LIMIT 6, 3
Однако, если кто-то удалит строку с cid = 3 после того, как вы прочитали строки с 1 по 3, выникогда не будет читать строку с cid = 5.
Я бы пошел с настроенной версией вашего исходного запроса, отслеживая самый высокий cid из каждого SELECT, и использовал бы это значение в следующий раз, когда вы выберете еще 3ряды.
SELECT * FROM `table`
WHERE cid > "previous_highest_cid"
ORDER BY `cid` ASC LIMIT 3
Вероятно, будет быстрее, вы не пропустите ни одной строки и т. д.