在MySQL的内部查询中使用外部查询的结果集

在MySQL的内部查询中使用外部查询的结果集,mysql,resultset,correlated-subquery,derived-table,Mysql,Resultset,Correlated Subquery,Derived Table,我有两个名为节点和链接的表。我正在执行以下查询,它返回我想要的结果。如何优化这个?我正在内部查询中使用外部查询的结果集。如何在内部查询中引用外部查询的结果集,以防止再次运行相同的外部查询。箭头之间的重复查询 SELECT * FROM nodes where name = 'Compost' union all -> SELECT * FROM nodes where id in ( SELECT target from links where source in ( SEL

我有两个名为节点和链接的表。我正在执行以下查询,它返回我想要的结果。如何优化这个?我正在内部查询中使用外部查询的结果集。如何在内部查询中引用外部查询的结果集,以防止再次运行相同的外部查询。箭头之间的重复查询

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))
上交选择,表现不佳的,加入

SELECT  ...
    FROM  a
    WHERE  x IN (
        SELECT  x
            FROM  b
            WHERE  test_b 
                )
      AND  test_a; 
->

并确保至少有一个表上有INDEXx

SELECT  ...
    FROM  a
    JOIN  b USING(x)
    WHERE  test_a
      AND  test_b;