PHPMyAdmin から実行すると、数秒以内に、それ自体でかなり高速に実行される 2 つのクエリがあります。
SELECT * FROM `testresults` WHERE `SCH_NAME` <> ''
SELECT AVG(pass_rate) FROM `testresults` WHERE `SCH_NAME` <> ''
ただし、2 番目のクエリをサブクエリとして使用すると、クエリの実行が非常に遅くなり、最大実行時間に達しても何も得られません。
SELECT
*
FROM `testresults`
WHERE pass_rate > (SELECT
AVG(pass_rate)
FROM `testresults`
WHERE `SCH_NAME` <> ''
)
AND `SCH_NAME` <> ''
その平均は一定ですが、サブクエリはすべての行に対して実行されているようです。平均が各行で変化するかのように解釈される原因となる、クエリに誤りがありますか? どのように書き換えることができますか?