我在 where 子句中有一个子查询,每次评估时都会扫描整个表。
SELECT k, j
FROM tab t1
WHERE t1.x > (SELECT AVERAGE(x) FROM tab t2 where t1.n = t2.n)
order by k, j
limit 100;
当我将 OFFSET 0 添加到子查询的末尾时,查询计划没有变化。
SELECT k, j
FROM tab t1
WHERE t1.x > (SELECT AVERAGE(x) FROM tab t2 where t1.n = t2.n OFFSET 0)
order by k, j
limit 100;
参考这篇文章。在这种情况下,优化围栏“OFFSET 0”在 where 子句中不起作用吗?