【发布时间】:2014-09-20 07:35:12
【问题描述】:
$query = $db->query("SELECT *
FROM users
ORDER BY username ASC");
while($user = $query->fetch_object()) {
$if_inside = $db->query("SELECT member_id
FROM project_members
WHERE member_id='$user->id'
UNION
SELECT admin_id
FROM project_admins
WHERE admin_id='$user->id'")->num_rows;
if($if_inside < 1) { // if not already in project
?>
<option value="<?php echo $user->username; ?>">
<?php echo $user->username; ?> </option>
<?php
}
}
?>
如何优化上面的代码?如果我的数据库中有 100 个用户,那么它会查询 100 次,而且它已经很慢(我有 2 个用户)
有没有更好的方法来检查用户是否已经在项目中?
【问题讨论】:
-
为什么不从项目中获取所有用户,然后针对所述用户的
id运行它们以查看他们是否在项目中?或者你可以做一些JOIN -
我必须从
project_members和project_admins获取所有用户,这就是我使用UNION的原因。我将如何将从查询中收到的两个值匹配到用户 ID?
标签: php mysql sql optimization