Приветствую!php sqlsrv_fetch_object производительность
Я пытаюсь решить несколько проблем с производительностью, которые возникают на нашем сайте. В рамках этих усилий я начал профилировать наши наиболее посещаемые страницы в соответствии с GA.
По существу, я определил, как я и предполагал, большая часть времени тратится на трафик, связанный с базой данных ... имеет смысл. К сожалению, когда мы смотрим поближе, то, что я нашел, НЕ ПРИНИМАЕТСЯ с таким же чувством.
Например, этот конкретный вызов MyAlganon_Model_Library_Item :: fetchItemTooltipsByItemIdArray() занимает 580,41 мс для возврата на мою промежуточную платформу.
После погружения в это 47.27ms того времени тратится на sqlsrv_query() в то время как 533.12ms из него проводится в функции fetchAll(), который просто петли делают sqlsrv_fetch_object:
$row = sqlsrv_fetch_object($this->query);
while ($row) {
$results[] = $row;
$row = sqlsrv_fetch_object($this->query);
}
return $results;
Похоже, на этот на определенной странице в результирующем наборе имеется 742 строки. Может быть, дело в том, что у меня нет реалистичной справки о том, сколько времени требуется для создания объекта StdClass? Кажется ли 533.12ms обычным временем перебора результатов 742 и превращения их в массив объектов?
Что такое запрос? Проблема, вероятно, связана с запросом, а не с функцией. –
Я могу разобраться с запросом из sproc, если это необходимо, но я не вижу, как это может быть запрос, в котором sqlsrv_query возвращается в 47.27ms, которая является частью, выполняющей sproc. Оставшиеся 533,12мс просто повторяются по результирующему набору, вызывая sqlsrv_fetch_object – jdsmith2816
Если ваш запрос возвращает огромное количество столбцов, потребуется время, чтобы обернуть его в объекты StdClass. Оптимизация запроса/таблицы в этом случае решит вашу проблему. –