【问题标题】:Updating related tables in MySQL在 MySQL 中更新相关表
【发布时间】:2012-07-26 09:02:38
【问题描述】:

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

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

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

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

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

谢谢

【问题讨论】:

  • 您可以执行以下步骤吗: 1. 将记录批量插入 table1 2. 批量更新 table2 中的记录(您需要条件匹配 table1 中的记录与 table2 中的记录相关)

标签: php mysql sql database


【解决方案1】:

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

exec MySp @myHierarchy = '<Recs><Parent Name="P1"><Child Name="C1" /><Child Name="C2"/></Parent></Recs>'

【讨论】:

    猜你喜欢
    • 2010-09-22
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 2010-10-24
    • 1970-01-01
    相关资源
    最近更新 更多