[英]Using result set from an outer query in inner query in MySQL
我有兩個表稱為“節點”和“鏈接”。 我正在執行以下查詢,它返回我想要的結果。 如何優化這一個? 我在內部查詢中使用外部查詢的結果集。 如何在內部查詢中引用外部查詢的結果集,以防止再次運行相同的外部查詢。 箭頭之間重復查詢。
SELECT * FROM nodes where name = 'Compost' union all
-> SELECT * FROM nodes where id in
( SELECT target from links where source in
( SELECT id FROM (SELECT * FROM nodes where name = 'Compost' <- ) as a)) union all SELECT * FROM nodes where id in
( SELECT target from links where source in (SELECT id FROM ( -> SELECT * FROM nodes where id in ( SELECT target from links where source in
( SELECT id FROM (SELECT * FROM nodes where name = 'Compost'<- ) as c))) as b))
將IN ( SELECT ... )
(表現不佳 )轉入JOIN。
SELECT ...
FROM a
WHERE x IN (
SELECT x
FROM b
WHERE test_b
)
AND test_a;
- >
SELECT ...
FROM a
JOIN b USING(x)
WHERE test_a
AND test_b;
並且看到至少有一個表上有INDEX(x)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.