我有这样的事情:
SELECT FROM table
WHERE field NOT IN (
SELECT FROM other_table ... //SECOND QUERY
)
问题:我不希望SECOND QUERY
的每一行都执行table
。我可以将QUERY 2
结果保存到某个变量吗?
答案 0 :(得分:2)
您可以通过运行EXPLAIN
并查看其是DEPENDENT SUBQUERY
还是SUBQUERY
来检查查询是否会针对每一行运行。将依赖于每一行。
根据您希望将其保存到变量'我猜它不会依赖。
如果要将结果集保存到变量'你需要使用临时表。在这种情况下,没有必要。
答案 1 :(得分:1)
LEFT NULL JOIN可能会快得多。
SELECT *
FROM table AS t
LEFT JOIN other_table AS ot ON ot.field = t.field
WHERE ot.field IS NULL