2012-06-20 2 views
3

Я не привык использовать Oracle, поэтому я не могу задать свой вопрос очень хорошо.PHP Oracle 10g очень медленная выборка

Я выполняю очень простые запросы SELECT с сервера Apache Linux с PHP 5.3 (PECL Oci8 1.4.6, клиент 11.2.0.3.0) на сервер Oracle (10g Enterprise Edition Release 10.2.0.1.0), который я «Не администратор.

oci_parse и oci_execute занимает меньше миллисекунды, но oci_fetch_array s, что я делаю сразу после этого ДЕЙСТВИТЕЛЬНО медленно (иногда больше, чем второй).

Сначала я попытался изменить SELECT * на SELECT [all the columns I need], но он все еще медленный.

На что я могу смотреть?

+0

Сколько столбцов возвращается и какие типы данных есть? –

+0

Самая большая таблица имеет почти 100, но та же проблема с меньшим количеством столбцов. Типы данных - дата, номер, varchar2, clob. –

+0

Возможно ли, что ваше узкое место действительно сеть? Извлечение будет захватывать строки от сервера к клиенту, я предполагаю, что они не находятся в одной подсети (удаленный хостинг вашего сервера?) – tbone

ответ

2

Попробуйте это:

oci_set_prefetch($statement_id, 1000); 

... или увеличить значение oci8.default_prefetch в php.ini.

+0

Я хотел сделать это, но он поддерживается только Oracle 11g (я с 10g) –

+0

Если вы не используете курсоры - он не должен требовать 11g, и это действительно зависит от Oracle Instant Client, для которого вы сказали, что это версия 11.2.0.3.0. Он должен работать. :) – Narf

+0

У меня уже есть oci8.default_prefetch = 100 в php.ini и все выборки занимают почти одно и то же время (от первого до последнего). –

Смежные вопросы