Я использую PHP 5.3.6 с PDO для доступа к Postgres 9.0.4. Меня попросили уменьшить след отчета отчета. Текущая реализация проста: выполнить запрос, сделать fetchall (), а затем итерацию с Foreach () через результирующий массив. Это, очевидно, не масштабируется с огромными наборами результатов: он может временно потреблять 100 МБ или более. он использует foreach (), то есть нет промежуточного массива через fetchall (). (Из того, что я прочитал, итерация с помощью оператора с помощью вызовов Foreach Calls () под обложками.) Это так же быстро и потребляет Way меньше памяти: около 28 КБ. Тем не менее, я не уверен, что делаю это правильно, потому что, хотя я сделал тонну Googling, трудно найти ответы на основные вопросы об этом: < /p>
[*] Я видел статьи, которые предлагают решить мою первоначальную проблему с использованием курсоров. Постгресный драйвер PDO уже использует курсоры внутри? Если написать свой собственный SQL для создания курсора, я готов, но я бы предпочел написать самый простой код (но не проще!).
Если Foreach вызывает Fetch () каждую итерацию, разве это не слишком сетевая болтливая? Или это умно и приносит много рядов одновременно, например, 500, чтобы сохранить полосу пропускания? (Это может означать, что он использует курсоры внутри.) Разве это не избыточно, учитывая, что эта ручка оператора PDO уже делает это? Или я что -то упускаю? $ sth = $ dbh-> prepare ($ sql); < /p> < /li>
< /ul>
Я обнаружил, что это не делало разницы в памяти или скорости Если бы я сделал это: < /p>
$sth = $dbh->prepare($sql, array( PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY ) );
< /code>
Это потому, что это в любом случае для по умолчанию для драйвера PDO Postgres? Это имело бы смысл, если бы он уже использовал курсоры внутри.>
Подробнее здесь: https://stackoverflow.com/questions/787 ... es-php-pdo
Лучшая практика для итерации по сравнению с результатом, установленным в Postgres/PHP/PDO? ⇐ Php
Кемеровские программисты php общаются здесь
1739959198
Anonymous
Я использую PHP 5.3.6 с PDO для доступа к Postgres 9.0.4. Меня попросили уменьшить след отчета отчета. Текущая реализация проста: выполнить запрос, сделать fetchall (), а затем итерацию с Foreach () через результирующий массив. Это, очевидно, не масштабируется с огромными наборами результатов: он может временно потреблять 100 МБ или более. он использует foreach (), то есть нет промежуточного массива через fetchall (). (Из того, что я прочитал, итерация с помощью оператора с помощью вызовов Foreach Calls () под обложками.) Это так же быстро и потребляет [b] Way [/b] меньше памяти: около 28 КБ. Тем не менее, я не уверен, что делаю это правильно, потому что, хотя я сделал тонну Googling, трудно найти ответы на основные вопросы об этом: < /p>
[*] Я видел статьи, которые предлагают решить мою первоначальную проблему с использованием курсоров. Постгресный драйвер PDO уже использует курсоры внутри? Если написать свой собственный SQL для создания курсора, я готов, но я бы предпочел написать самый простой код (но не проще!).
Если Foreach вызывает Fetch () каждую итерацию, разве это не слишком сетевая болтливая? Или это умно и приносит много рядов одновременно, например, 500, чтобы сохранить полосу пропускания? (Это может означать, что он использует курсоры внутри.) Разве это не избыточно, учитывая, что эта ручка оператора PDO уже делает это? Или я что -то упускаю? $ sth = $ dbh-> prepare ($ sql); < /p> < /li>
< /ul>
Я обнаружил, что это не делало разницы в памяти или скорости Если бы я сделал это: < /p>
$sth = $dbh->prepare($sql, array( PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY ) );
< /code>
Это потому, что это в любом случае для по умолчанию для драйвера PDO Postgres? Это имело бы смысл, если бы он уже использовал курсоры внутри.>
Подробнее здесь: [url]https://stackoverflow.com/questions/7878138/best-practice-to-iterate-over-result-set-in-postgres-php-pdo[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия