Найден SQL-запрос в коде, выполнение которого занимает 31 минуту (1900 секунд).Сначала оператор select захватывает 1955 строк, затем код перебирает эти строки для запуска обновления на основе числа внутри этого набора записей.Таблица, через которую он проходит, имеет 14 000 строк.Как я могу ускорить это?
$sql = "select id, did, customer_id from dids";
$rs = $db->PDOquery($sql, $qry_arr);
//Loop through all DIDs and attach to cdrs select id, did, customer_id from dids
while($row=$rs->fetch()){
$qry_arr = array(':did_id' => $row['id'],
':customer_id' => $row['customer_id'],
':did' => $row['did']);
$sql = "update ".$billing_table." c ";
$sql .= "set c.did_id = :did_id, c.customer_id = :customer_id ";
$sql .= "where c.customer_id = 0 and c.telcom_num = :did ";
$result=$db->PDOquery($sql, $qry_arr);
set_time_limit(30); //Reset time limit after each query
if (!$result) {
error_log(date("Y/m/d h:i:sa").": "."\nError In Sql.\n".$sql, 3, $cron_log);
}
}
Попытка с использованием следующего, но получить сообщение об ошибке с кодом ошибки: 1054. Неизвестный столбец 'dids.did' в 'где пункт'
UPDATE ".billing_table." SET ".billing_table.".did_id = dids.id, ".billing_table.".customer_id = dids.customer_id WHERE dids.did = ".billing_table.".telcom_num