Ускорение работы PDO MySQL

hoting

Новичок
Друзья привет, если кто-то имеет дело с PDO MySQL, подскажите что можно сделать. Суть проблемы такова, при использовании PDO у меня нереально тормозит проект. На старой библиотеке MySQL такого не было, хотя разработчики PDO заявляют об увеличении производительности... итак вот код:
Сам процесс установки соединения с БД
Код:
      $dbpasswd = "******";// пароль
 
   // Задаем параметры среды 
    $option = array(    PDO::ATTR_ERRMODE                    =>    PDO::ERRMODE_EXCEPTION,
                            PDO::ATTR_DEFAULT_FETCH_MODE    =>    PDO::FETCH_ASSOC,
                            PDO::ATTR_PERSISTENT             =>    true);
    
try {
    //Подключение в локальном пространстве
    $dbh = new PDO('mysql:host=127.0.0.1; dbname=crm; charset=utf8', $dbuser, $dbpasswd, $option);
    
    //Нужная кодировка для базы данных при работе с данными       
    $dbh->exec('SET NAMES utf8');
    
}

catch (PDOException $e) { //Обработчик ошибок
    print "В процессе подключения произошла ошибка!: " . $e->getMessage() . "<br/>";
    die();
}
Далее код на выборку данных

Код:
try ////Запрос на выборку данных и перемещаем указатель
    {
    $QueryPeople = $dbh->prepare('SELECT * FROM `peoples` ORDER BY ?');
    $QueryPeople->execute(array($sortdata));
                                                
    }
            
catch ( Exception $e )  //Если будет ошибка, выводим её для отладки
    { 
    echo "Шеф Фсё пропало! : ".$e -> getMessage ();
    }     

while($DataPeople = $QueryPeople->fetch())
    { 

    try //Проверяем профессию
            {
            $profesname = $dbh->prepare('SELECT * FROM `profession` WHERE `id_profession` = ?');
            $profesname->execute(array($DataPeople['id_profession']));
                           
            if ($profesname->rowCount() > 0) //если есть хоть одна запись
                {
                $profname = $profesname->fetch(); //массив данных строки                                 
              $userprofessionname = $DataPeople['profession'];   
              }     else {$userprofessionname=" ";} //Если нет никаких записей
                           
            }
           
        catch ( Exception $e )  //Если будет ошибка, выводим её для отладки
            {  
              echo "Шеф Фсё пропало! : ".$e -> getMessage (); 
            }   

try //Осуществляем запрос к беазе email адресов
                {
                $qeryemailname = $dbh->prepare('SELECT * FROM `peopleemail` WHERE `id_peoples` = ?');
                $qeryemailname->execute(array($DataPeople['id_people']));
                           
                if ($qeryemailname->rowCount() > 0) //если есть хоть одна запись
                    {
                    while($dataemailname = $qeryemailname->fetch())
                        {
                        echo "<i class=\"material-icons\" style=\"color:#797979; font-size:12pt; vertical-align:middle;\">mail_outline</i>&nbsp;&nbsp; ".$dataemailname['email']."<br>";
                        }
                             
                    }
                }
           
            catch ( Exception $e )  //Если будет ошибка, выводим её для отладки
                {  
                  echo "Шеф Фсё пропало! : ".$e -> getMessage (); 
                }

ну и еще много разного кода, в т.ч. и обращение к смежным таблицам

} // Конец цикла While
В чем может быть причина жутких тормозов?
 

Фанат

oncle terrible
Команда форума
1. Ускорение будет только если ты используешь ПДО правильно, а не как сейчас
2. В любом случае, ускорение будет копеечное, но как минимум должно быть так же быстро как и раньше. В любом случае, к твоим тормозам это отношения не имеет
3. Почему лично у тебя жуткие тормоза, никто не знает.
4. Твой код в любом случае - ад. В этом причина тормозов, или не в этом, но за каждый запрос, выполненный в цикле, надо бить по рукам столько раз, сколько раз он выполняется.

Открой для себя джойны и сделай все одним запросом.
После этого, если тормоза сохранятся, можешь вернуться со своим вопросом.
 
Последнее редактирование:

AnrDaemon

Продвинутый новичок
Ну и PDO::ATTR_PERSISTENT=true это как мёртвому припарка.
 
Сверху