CodeIgniter - Как выбрать все строки в большой таблице без утечки памяти - PullRequest
1 голос
/ 09 января 2020

Довольно сложно понять, что мне нужно в заголовке.

CodeIgniter выполняет запрос SELECT в таблице из 800 000+ строк за один снимок.

Это занимает много памяти, но на одном указанном c сервере я получаю фатальную ошибку «Недостаточно памяти».

В целях повышения производительности я хотел бы разделить выборку на 2 выборки, а более конкретно, на 50% первых строк и затем осталось 50%.

Я повторно использую этот набор данных для выполнения INSERT впоследствии.

Как сделать это, не потеряв / не забыв ни одной строки?

1 Ответ

1 голос
/ 09 января 2020

Помимо того, что подобные операции тесно связаны с проблемами производительности, вы можете использовать unbuffered_row.

В основном, если у вас есть работа с такими большими данными - вы должны использовать unbuffered_row предоставляется и интегрируется во встроенный построитель запросов.

его очень хорошо задокументировано здесь в разделе строк результатов.

например:

$query = $this->db->select('*')->from('your_table')->get();

while($row = $query->unbuffered_row())
{
    //do your job
}

Это позволит избежать проблем с памятью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...