@driverx18

Как выбрать по 1000 записей из БД?

У меня есть таблица из которой я выбираю данные, и их нужно записать в Excel файл через PHPExcel.
В таблице может быть от 100к до 1 млн записей (смотря какие категории выберет пользователь). Если я пытаюсь все 100к строк записать сразу, то оно говорит что проблема с памятью PHP. (Увеличивать память в конфигах не имею права).

Я хочу выбирать по 1000 записей. Как такого результата добиться? То есть надо чтобы оно взяло сначала 1-1000 записей (у которых ID может быть начинаться не с 0, и не с 1 а с произвольного числа). Записало их, дальше с 1001 по 2000 записей. Как построить запрос? Нужен оффсет? Какой цикл сделать? Я делал типо LIMIT 1000 OFFSET 1000 но как понял, то это совсем уж не правильно.
код сейчас примерно такой:
$i = 0; // делаем счётчик (хотел чтоб каждые 1000 записей выбирало)
        do {
            $i += 1000;
 $sql = "SELECT ....... LIMIT 1000 OFFSET $i";
 $stmt = $this->prepare($sql);
            $stmt->execute();
            $result = $stmt->fetchAll(\PDO::FETCH_ASSOC);
        } while ($result);
  • Вопрос задан
  • 837 просмотров
Решения вопроса 1
heksen
@heksen
SELECT ... FROM ... WHERE ... LIMIT 0, 1000
В LIMIT указываете нужный диапазон
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы