我有这样的查询
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/