0

我需要用 PHP 更新 MySQL 中的两个表。第二个表需要插入到第一个表中的行的 ID。

目前我有一些 PHP 代码循环遍历数组中的每个项目的这个过程:

  1. 通过尝试获取它的 ID 来检查记录是否存在。
  2. 如果记录不存在,则插入它并获取最后一个插入 ID。
  3. 使用我们找到的 ID 作为外键更新第二个表。

这是非常低效的,因为要进行多个数据库调用。我宁愿将数据存储在两个数组中,每个表一个,然后在循环完成时批量插入它们。问题是我需要先获取第一个表中行的 ID,然后才能执行此操作。

这是我经常遇到的问题。这样做的最有效/“最佳实践”方式是什么?

谢谢

4

1 回答 1

0

创建用于在一个服务器调用中插入整个层次结构的存储过程。将所有父子记录作为 XML 提供并在过程中解析/插入记录(afaik MySql 应该具有类似于 MS SQL 的 XML 函数)。这将导致相同数量的 INSERT 语句,但是它们将在服务器端执行,这应该会提高性能。例如

exec MySp @myHierarchy = '<Recs><Parent Name="P1"><Child Name="C1" /><Child Name="C2"/></Parent></Recs>'
于 2012-07-26T09:11:43.660 回答