我在 PHP 中遇到了这个查询的问题。它太慢了,执行后几分钟我无法连接到服务器。我一直在从主查询中删除单独的子查询,并发现在我删除最后一个内部查询后它工作得非常顺利。
表“u”有 30.000 行,表“u_r”大约有 17.000 行,表“u_s”大约有 13.000 行,表“s”大约有 100 行。尽管表“u_r”和“u_s”有很多行,但只有 2-3 行有与条件匹配的相同“id_u”。
我希望,我提供了足够的信息。如果您还需要了解其他信息,请随时在评论中提问。
SELECT DISTINCT id_p
FROM u
WHERE
'$x' IN(
SELECT id_p
FROM u_p
WHERE id_u=u.id_u
)
AND
(
'$y' IN (
SELECT id_r
FROM u_r
WHERE id_u=u.id_u
)
OR
'$y' IN (
SELECT DISTINCT id_r
FROM s
WHERE id_s IN (
SELECT id_s //without this query, everything works fine
FROM u_s
WHERE id_u=u.id_u
)
)
)