Ну, у меня есть эта проблема, с которой я надеялся, что кто-то может мне помочь:
Так о чем это?
У меня есть разработанный PHP-скрипт, который импортирует файлы XML из папки в базу данных.
XML-файл выглядит следующим образом: XML-файл
В основном скрипт хранит информацию из файла XML в 5 таблицах, и это работает правильно. Но проблема в том, что мой файл не содержит информации об идентификаторах игроков в объекте PLAYER, поэтому после того, как я импортирую все в базу данных, мне нужно выполнить этот запрос:
$sql = "SELECT igraci.ID, utakmice.Player_ID, utakmice.ID AS broj FROM igraci LEFT JOIN utakmice ON (igraci.Team_ID = utakmice.Team_ID) AND (igraci.Surname = utakmice.Lastname) AND (igraci.Name = utakmice.Firstname);";
$tabela = mysql_query($sql);
$row = mysql_fetch_assoc($tabela);
$totalrow = mysql_num_rows($tabela);
$i=0;
do {
$i++;
$sql = "UPDATE utakmice SET Player_ID=" . $row['ID'] . " WHERE ID = " . $row['broj'] . "";
echo $sql."<br>";
mysql_query($sql);
} while ($row = mysql_fetch_assoc($tabela));
Оператор select выполняется очень быстро, и у меня нет проблем с этим, но команда UPDATE делает тайм-аут скрипта. Я попытался сделать поля, используемые в этом запросе, индексами, но это не помогло, и как только у меня будет более 2200 строк, сценарий выйдет из строя. Сценарий работал нормально на старой версии php, но в прошлом месяце нам пришлось обновиться до 5.3, и вот тут-то и началась проблема. Есть ли способ ускорить это ОБНОВЛЕНИЕ?
PS: XML-файл взят из системы FIBA live Cms.
LIMIT 1
в запросе на обновление, если у вас есть только одна запись дляID
в таблице. уменьшит время выполнения sql - person Satish Sharma   schedule 30.04.2014