Единственные лимит это хранение выбранных данных в памяти скрипта во время работы.
Данные можно доставать по частям, аналогично тому как делается пагинация на любом сайте.
Например, если в таблице есть поле id (autoincrement), то можно выбирать данные порциями с условием типа id > XXXXX
Дополнительно прикрутить last_check тоже можно, если это требует логика приложения.
Пример кода ниже, для понимания логики. Вместо mysqli можно использовать pdo или что угодно
<?php
//$db = new mysqli(); //соединение с БД
$min_id = 0;
$LIMIT = 1000;
//в цикле идём от id = 0 до id = "самый максимальный", выбирая по 1000 записей за раз.
while(true)
{
$result = $db->query("SELECT * FROM `table` WHERE `id` > '{$min_id}' LIMIT {$LIMIT}");
//если записей больше не найдено прерываем цикл
if($result->num_rows == 0)
{
break;
}
while($row = $result->fetch_assoc())
{
//обрабатываем данные производим манипуляции
//сохраняем последний обработанный id
$min_id = $row['id'];
}
}