当从 PHPMyAdmin 执行时,我有两个查询可以在几秒钟内自行运行得相当快。
SELECT * FROM `testresults` WHERE `SCH_NAME` <> ''
SELECT AVG(pass_rate) FROM `testresults` WHERE `SCH_NAME` <> ''
但是,当我将第二个查询用作子查询时,查询运行速度很慢,以至于我达到了最大执行时间而什么也得不到。
SELECT
*
FROM `testresults`
WHERE pass_rate > (SELECT
AVG(pass_rate)
FROM `testresults`
WHERE `SCH_NAME` <> ''
)
AND `SCH_NAME` <> ''
似乎正在为每一行执行子查询,尽管该平均值是恒定的。我的查询中是否有一些不正确的地方导致它被解释为每行的平均变化?怎么可能改写?