PHP-приложение, которое я пытаюсь отладить, запускает несколько плохо спроектированных запросов в большую базу данных MySQL.
Несколько страниц работают очень медленно, и оказалось, что это из-за нескольких запросов.Я начал проверять каждый запрос один за другим, и хотя они медленные, они не такие медленные сами по себе.
После некоторой дальнейшей отладки оказалось, что они медленные, только когда они выполняются приложением какподготовленные операторы.
- Если я выполняю запрос вручную через клиент MySQL, это занимает около 300 мс.Если я запускаю создание подготовленного оператора через клиент MySQL, задаю параметры и запускаю его, это занимает около 300 мс.
- Если я запускаю простой запрос из PHP (mysqli), это занимает около 300 мс.
- Если я запускаю его так, как приложение - через
mysqli
- как подготовленное утверждение, это займет 100 секунд.
Я подумал, может быть, это mysqli
, поэтому я попыталсяэто с PDO, результат тот же.Пробовал разные версии PHP (5.6, 7.2, 7.3) и получал один и тот же результат.
Так что я дал последний шанс и написал небольшой скрипт Go для тестирования, и я получил те же результаты и вещи улучшились.
Теперь, если я запускаю подготовленную версию оператора запроса от клиента MySQL или MySQL Workbench или клиента базы данных PHPStorms, это быстро.И если я запускаю запрос из кода, он чертовски быстр.
Любая помощь будет очень благодарна за то, что я должен смотреть, где я должен продолжить отладку.