php - UPDATE 语句耗时过长

标签 php mysql xml

好吧,我有这个问题,我希望有人能帮助我:

那到底是怎么回事呢?

我有一个开发的 PHP 脚本,可以将 XML 文件从文件夹导入数据库。

XML 文件看起来像这样- XML file

脚本基本上将 XML 文件中的信息存储到 5 个表中,并且可以正常工作。 但问题是我的文件不包含 PLAYER 对象中玩家的 ID 信息,所以在我将所有内容导入数据库后,我必须运行此查询:

  $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 命令使脚本超时。 我已尝试制作此 QUERY 索引中使用的字段,但这没有帮助,一旦我有超过 2200 行,脚本就会失败。 该脚本在旧版本的 php 上执行正常,但上个月我们不得不升级到 5.3,这就是问题开始的地方。 有什么办法可以加快更新速度吗?

PS:XML文件来自FIBA live Cms系统。

最佳答案

是不是php脚本超时了?

您是否需要将此作为 SELECT 执行,然后可能进行大量更新?

你能不能只使用一个 UPDATE 语句,像这样:-

UPDATE utakmice
INNER JOIN igraci
ON (igraci.Team_ID = utakmice.Team_ID) 
AND (igraci.Surname = utakmice.Lastname) 
AND (igraci.Name = utakmice.Firstname)
SET utakmice.Player_ID = igraci.ID

关于php - UPDATE 语句耗时过长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23387244/

相关文章:

带参数的 XML 实体?

php - 严重的 CSS 情况。完全难倒

php - PHP Doctrine MongoDB ODM 中的鉴别器字段冲突是什么?

java - 内部异常 : com. mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:

mysql - Postgres 的并发参数

xml - 为什么 curl 在 HTTP PUT 中的消息正文之前发送命令行?

php - Left Join获取上一条记录sql

php - Codeigniter 中的路由 - 自动

mysql - 在哪里存储多个 Web 应用程序的资源

c# - Xml 反序列化 - 数组元素