MySQL多个更新查询与一个插入。。。关于重复密钥更新查询

MySQL多个更新查询与一个插入。。。关于重复密钥更新查询,mysql,Mysql,我需要更新数百到数千行。我想知道以下哪个选项更好: 发送数百到数千个更新查询 发送一个大的插入到。。。关于重复密钥更新查询 更多信息: 这张桌子是InnoDB的。 这些行都是现有的重复行。此操作中将不会插入新行。 大约4-10列将被涉及。 只涉及这一张表。 我正在使用PHP执行查询。 Insert应该更快,因为我可以将多行批处理到一个查询中,但这是一个读量很大的表,我担心会被锁定。插入查询会比多个更新查询导致更多的锁定问题吗 多谢对一个或多个表执行多个操作时,应使用事务,以便在其中一个操作出错时

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

发送数百到数千个更新查询 发送一个大的插入到。。。关于重复密钥更新查询 更多信息:

这张桌子是InnoDB的。 这些行都是现有的重复行。此操作中将不会插入新行。 大约4-10列将被涉及。 只涉及这一张表。 我正在使用PHP执行查询。 Insert应该更快,因为我可以将多行批处理到一个查询中,但这是一个读量很大的表,我担心会被锁定。插入查询会比多个更新查询导致更多的锁定问题吗


多谢对一个或多个表执行多个操作时,应使用事务,以便在其中一个操作出错时将数据库返回到一致状态

优点:

简单地说,我们可以说交易的以下优势 维持

数据库完整性 原子性 耐久性 一致性 交易是有用的

请参见这个简单的示例:

见:

旁注:


如果您希望在不使用事务的情况下进行更新,则更新速度将比插入更快…

这对于一个好的应用程序来说,信息太少了answer@michael你需要什么信息?所有的插入都是重复的吗?你用什么样的桌子-myisam,Innou db?有多少列受到影响?是否存在多个重复的可能性?查询是否涉及多个表?您是否考虑过事务?
// 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);