оптимизация запросов на выборку php sql
Я работаю с PHP и Oracle. При выполнении запросов я использую метод oci_set_prefetch()
перед oci_execute()
для быстрой выборки. Поскольку мой вывод большой, я устанавливаю его на 1000. Хотя время для полного выполнения теперь меньше, но все еще неудовлетворительно. Тот же запрос, если он выполняется непосредственно в базе данных, приносит данные за 2-3 секунды, тогда как при выполнении с помощью методов PHP это занимает гораздо больше времени.
Существует ли какой-либо другой метод сокращения этого времени выборки?
Заранее благодарю
1 answers
Ваша настройка параметра oci_set_prefetch увеличивает задержку вашего запроса; то есть задержку между моментом отправки запроса и моментом получения первых результатов. Вы проинструктировали Oracle подождать, пока у него не будет 1000 строк данных, прежде чем начинать отправлять их на PHP. Он старательно следует вашим инструкциям.
Вы видите быстрый результат в sql*plus или любом другом клиенте интерактивных запросов, который вы используете, потому что вы видите первую строку своего набора результатов достаточно быстро, и вы обманываетесь, думая, что весь запрос выполняется быстро, потому что результаты проносятся мимо вас.
Вам нужна вся тысяча строк? Попробуйте отключить параметр предварительной выборки и посмотреть, получите ли вы более благоприятные результаты. Попробуйте ограничить длину вашего набора результатов с помощью AND ROWNUM <= 10
или чего-то подобного, и посмотрите, поможет ли это.