php - 如何避免每次循环运行时都进行查询? (优化代码)

标签 php mysql sql optimization

$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 个用户)

有没有更好的方法来检查用户是否已经在项目中?

最佳答案

我想这就是您要找的:

$sql = $db->query("Select distinct username from users where username not in (select member_id from project_members union select admin_id from project_admins) order by username ASC");
$queryResult = $sql->fetch_all();

foreach($queryResult as $username) {
    echo "<option value='" . $username . "'>" .  $username . "</option>";
}

针对所有不在 project_members 或 project_admins 中的用户名对数据库进行一次点击,然后 foreach 显示结果。

关于php - 如何避免每次循环运行时都进行查询? (优化代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25006687/

相关文章:

PHP 自动加载自己的类和 AWS SDK

php - 为什么login.php一直显示密码无效?

php - Laravel Echo 不听

mysql - 选择每首歌曲中观看次数最多的视频

mysql - 类似类对象推荐的 MySQL 数据模型

mysql - 将 mysql 数据库导入 Bigquery 的最佳方法

MySql:将CSV数据上传到临时表然后加入

c# - EF 生成的 SQL 出现无效列名错误

php - mySQL 日期时间和时间戳

mysql - 如何在MySql中多次使用别名?