我目前有两个使用PDO / MySQL的查询:
$sql = "UPDATE permissions SET valid = 'N' WHERE perm_desc = :perm_desc";
$sth = $this->db->prepare($sql);
$sth->bindParam(':perm_desc', $perm_desc);
$sql2 = "UPDATE role_perm SET valid = 'N' WHERE perm_id = :perm_id";
$sth2 = $this->db->prepare($sql2);
$sth2->bindParam(':perm_id', $perm_id);
我想知道将这些结合起来是否更有意义:
$sql = "UPDATE permissions, role_perm
SET permissions.valid = 'N', role_perm.valid = 'N'
WHERE permissions.perm_desc = :perm_desc AND role_perm.perm_id = :perm_id";
我无法绕着JOIN缠绕我的脑袋,有些人说他们的速度更快,而其他人则认为速度较慢。什么是最好的解决方案?
答案 0 :(得分:0)
使用当前的两种不同更新方法,您必须处理第二次更新失败的情况,并手动回滚第一次更新。如果您依赖开放式事务来处理失败,那么您将在数据库中打开一个比所需时间更长的事务。
但毕竟,这取决于你的要求。如果您需要同时执行这两个更新(如果第二个更新失败则回滚),那么我宁愿选择sentence
方法。通过这种方式,您可以从交易中受益。