2013-05-20 4 views
-1

Я пытаюсь переписать некоторые из собственных функций mysql для преобразования в функциональность PDO. Тем не менее, я вижу огромное влияние на производительность, и мой обычный запрос теперь занимает 2,8 секунды, с 0,14 секунды для загрузки данных на странице. Это мой первоначальный запрос sql, где это будет сервер как общая функция для извлечения одной части информации на одной строке. Имейте в виду, что страница генерирует около 100 строк.PDO против функций MySQL

protected function query_s($table, $col, $where_col , $where, $return_col) 
{ 
    $SQL = "SELECT $col FROM ".$table." WHERE $where_col='".$where."' LIMIT 1"; 
    try 
    { 
     if(!mysql_query($SQL)) 
     { 
      throw new Exception("MySQL error: ". mysql_error()); 
     } 
     else 
     { 
      $data = mysql_fetch_array($SQL); 
      return $data[$return_col]; 
     } 
    } 
    catch(Exception $e) 
    { 
     echo "Error <p> ".$e->getMessage()." at line ".$e->getLine() ; 
    } 
} 

Я не уверен, что замедляет работу. Есть идеи?

+5

Можете ли вы показать версию после того, как вы внесли изменения в PDO (т. Е. Медленную версию)? Также вы можете дать фактические запросы, запущенные на сервере (с включенными предложениями) для обоих случаев? –

+0

Сколько строк имеет таблица? индексируются поля where where where? Это не только концепция PDO, которая будет ускорять все до –

+0

В таблице более 3000 строк (я показываю только 100), а также предложения JOIN и другие методы класса для извлечения конкретных данных из других таблиц. Я посмотрел на этот индексный аспект, и все в порядке. Я попытаюсь получить некоторый код после разбивки класса немного, чтобы показать фактический пример. – Dimitri

ответ

0

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

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

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

Также обратите внимание, что ваш способ обработки исключений неверен. Вы не должны улавливать и эхо.

+0

Я понял, в чем проблема. У меня было слишком много контактов, так как я написал новый код для PDO. Кроме того, что вы предложите для обработки исключений? – Dimitri

+1

просто не поймать их –

Смежные вопросы