gpt4 book ai didi

MySQL 多次更新查询与一次插入 ... 关于重复键更新查询

转载 作者:行者123 更新时间:2023-11-30 22:55:12 24 4
gpt4 key购买 nike

我需要更新成百上千行。我想知道以下哪个选项更好:

  1. 发送多个(成百上千个)“UPDATE”查询
  2. 发送一个(大)“INSERT INTO ... ON DUPLICATE KEY UPDATE”查询

更多信息:

  1. 表是 InnoDB。
  2. 所有行都存在(重复)。此操作不会插入新行。
  3. 将涉及大约 4 - 10 列。
  4. 只涉及到这一表。
  5. 我正在使用 PHP 来执行查询。

插入应该更快,因为我可以将多行批处理到一个查询中,但这是一个读取密集型表,我担心锁定。插入查询会比多个更新查询导致更多的锁定问题吗?

谢谢

最佳答案

在对一个或多个表执行多个操作时应使用事务,以允许您将数据库返回到一致的状态,以防其中一个操作出现错误...

优点:

简单的我们可以说下交易的优势维护

  • 数据库完整性
  • 原子性
  • 耐用性
  • 一致性

交易很有用

看这个(简单的)例子:

// Set autocommit to off
mysqli_autocommit($con,FALSE);

// Update values
mysqli_query($con,"UPDATE ...");
mysqli_query($con,"UPDATE ...");
// or do it with prepared statements and run bind_params(...) and execute() in a loop (anyway the better solution // however your situation is


// Commit transaction
mysqli_commit($con);

// Close connection
mysqli_close($con);

参见: http://dev.mysql.com/doc/refman/5.0/en/commit.html http://dev.mysql.com/doc/refman/5.6/en/innodb-implicit-commit.html

旁注:

如果你想在没有事务的情况下进行,更新对你来说会更快(与插入...相比)

关于MySQL 多次更新查询与一次插入 ... 关于重复键更新查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26724751/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com