оптимизация запросов на выборку php sql


Я работаю с PHP и Oracle. При выполнении запросов я использую метод oci_set_prefetch() перед oci_execute() для быстрой выборки. Поскольку мой вывод большой, я устанавливаю его на 1000. Хотя время для полного выполнения теперь меньше, но все еще неудовлетворительно. Тот же запрос, если он выполняется непосредственно в базе данных, приносит данные за 2-3 секунды, тогда как при выполнении с помощью методов PHP это занимает гораздо больше времени.

Существует ли какой-либо другой метод сокращения этого времени выборки?

Заранее благодарю

 2
Author: Shubhra, 2011-09-20

1 answers

Ваша настройка параметра oci_set_prefetch увеличивает задержку вашего запроса; то есть задержку между моментом отправки запроса и моментом получения первых результатов. Вы проинструктировали Oracle подождать, пока у него не будет 1000 строк данных, прежде чем начинать отправлять их на PHP. Он старательно следует вашим инструкциям.

Вы видите быстрый результат в sql*plus или любом другом клиенте интерактивных запросов, который вы используете, потому что вы видите первую строку своего набора результатов достаточно быстро, и вы обманываетесь, думая, что весь запрос выполняется быстро, потому что результаты проносятся мимо вас.

Вам нужна вся тысяча строк? Попробуйте отключить параметр предварительной выборки и посмотреть, получите ли вы более благоприятные результаты. Попробуйте ограничить длину вашего набора результатов с помощью AND ROWNUM <= 10 или чего-то подобного, и посмотрите, поможет ли это.

 0
Author: O. Jones, 2011-09-20 18:46:52