php - 为什么 PHP 中的查询内部查询比 2 个查询慢?

标签 php mysql subquery

我有这样的查询

UPDATE Table2 
   SET status = 2  
   WHERE user_id in (SELECT user_id FROM Table1 WHERE date > 0)

执行大约需要10秒 我使用 php 分成两个查询

q1 ="SELECT user_id FROM Table1 WHERE date > 0"
$q1_res=sql->execq($q1);

for ($i = 0; $i < count($q1_res); $i++) {
    foreach ($q1_res[$i] as $key => $value) {
        if ($key === "user_id") {
            $q1_res_ids .= $value . ",";
        }
    }
}

$q2 ="UPDATE Table2 
       SET status = 2  
       WHERE user_id IN". $q1_res_ids
$sql->execq($q2);

执行时间不到 1 秒,我认为使用 MYSQL 会更快吗?

最佳答案

如果您首先执行第二个查询,并且此后不久执行 PHP 脚本,则选择查询的结果很可能已被 Mysql Query Cache 缓存。 ,因为查询是相同的。这可以解释执行时间的差异。

关于php - 为什么 PHP 中的查询内部查询比 2 个查询慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7842484/

相关文章:

php - 将变量参数列表传递给 sprintf()

java - 无法使用android studio向MySQL数据库插入数据

php - 清除 javascript 源缓存 laravel 5.8

mysql - 根据 1 个字段或另一个字段选择计数 - 条件计数

t-sql - 从存储过程中获取 Top N

javascript - 如何通过ajax将隐藏字段值传递给codeigniter Controller

mysql - 立即将页面中的相似字符串插入数据库

php - PDO:参数号无效:参数未定义。但是我有所有的领域?

mysql - 使用 WHERE NOT EXISTS 的 SQL 子查询

mysql - 嵌套 SQL 查询