将双嵌套查询转换为JOIN语句以及其他优化

Bil*_*rim 7 mysql sql join nested-queries

我有这个查询非常具体,并返回我需要的.众所周知,mysql中的嵌套查询在运行时方面可能非常糟糕.如果有人可以帮助我将以下代码转换为JOIN声明,我将非常感激.

当然,欢迎并鼓励任何其他优化.

SELECT title 
FROM   exp_channel_titles 
WHERE  entry_id IN (SELECT rel_child_id 
                    FROM   exp_relationships 
                    WHERE  rel_id IN (SELECT field_id_202 
                                      FROM   exp_channel_data 
                                      WHERE  entry_id = 19971));
Run Code Online (Sandbox Code Playgroud)

谢谢!

Mat*_*lie 4

SELECT DISTINCT
  titles.title
FROM
  exp_channel_titles  AS titles
INNER JOIN
  exp_relationships   AS rel
    ON titles.entry_id = rel.rel_child_id
INNER JOIN
  exp_channel_data    AS channel
    ON rel.rel_id = channel.field_id_202
WHERE
  channel.entry_id = 19971
Run Code Online (Sandbox Code Playgroud)

如果您有很多:很多关系等,则 DISTINCT 就在那里,否则可能会创建重复项。

在优化方面,确保每个表在 JOIN 和 WHERE 子句中使用的字段上都有索引。