【发布时间】:2013-05-03 11:28:16
【问题描述】:
我的数据库中有 5 个表:Category1、Category2、Category3、Category4、Category5
我有一个用户可能会或可能不会在这些表中找到。如果他被发现了,我想把他从桌子上删除。
我可以通过 5 个这样的查询来做到这一点:
//search if the user is already subscribed in every one of the categories
$stmt = $db->prepare("Select * FROM category1 WHERE deviceUDID = :deviceUDID");
$stmt->execute(array(':deviceUDID' => $deviceUDID));
if($rows_found = $stmt ->rowCount()) {
$stmt = $db -> prepare("DELETE FROM category1 WHERE deviceUDID =:deviceUDID");
$stmt->execute(array(':deviceUDID' => $deviceUDID));
}
那么对于category2:
//search if the user is already subscribed in every one of the categories
$stmt = $db->prepare("Select * FROM category2 WHERE deviceUDID = :deviceUDID");
$stmt->execute(array(':deviceUDID' => $deviceUDID));
if($rows_found = $stmt ->rowCount()) {
$stmt = $db -> prepare("DELETE FROM category1 WHERE deviceUDID =:deviceUDID");
$stmt->execute(array(':deviceUDID' => $deviceUDID));
}
其他类别依此类推..
是否可以使用 1 个查询来搜索所有这些类别以使其更快?
但我看不出这样的事情发生的逻辑。有什么想法吗?
编辑(奖金部分)
即使用户不在那里并且让查询失败,每次只进行 DELETE 查询会更容易、更快或更有效吗?
或者我应该首先检查每个表,如果找到则进行 DELETE 查询?
哪个更有效?
【问题讨论】: