Рейтинг:1

PHP PDO очень медленный при выборке

флаг in

У меня проблема с парой запросов, выполняемых в PDO на PHP при подключении к серверу MSSQL 2019. Я проверил время в SSMS и оно быстрое. Я также добавил в свой код несколько таймеров, чтобы видеть время выполнения запроса и время получения данных.

Я обнаружил, что проблема заключается в получении данных.

Запрос занимает около 0,5 секунды, но данные доходят до PHP за 5-10 секунд.Это менее 500 000 байтов в виде текста, так что это небольшой набор данных, состоящий из 9000 строк. все это работает в AWS. PHP и SQL находятся в одной зоне доступности и в одной подсети. Связь между ними хорошая, а секунды для такого небольшого набора данных кажутся сумасшедшими... так что, если предположить, что это настройка PHP?

Мой оператор подготовки имеет следующие параметры:

$stmt = $this->DB->prepare( $query, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL) );

У кого-нибудь есть идеи, как я могу ускорить его? ТИА!

Изменить: я также использовал SSMS с удаленного компьютера, и запрос выполняется очень быстро; поэтому проблема должна быть в соединении и/или настройках PDO.

Zhorov avatar
флаг cn
Каково время выполнения, когда вы используете курсор по умолчанию: `$stmt = $this->DB->prepare($query);`?
флаг in
Это решило это! :) Спасибо. Время выборки примерно в 200 (!) раз быстрее, если курсор не установлен для больших запросов!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.