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

标签 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));

谢谢!

最佳答案

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

存在 DISTINCT 是因为您有许多关系等,否则可能会产生重复。

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

关于mysql - 将双重嵌套查询转换为 JOIN 语句,以及其他优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12096098/

相关文章:

mysql - Mysql 驱动是否支持保存点?

mysql - GROUP BY 和 ORDER BY - 按特定字段排序

mysql - 如何从 mysql 数据库创建雷达 Chartjs 的下拉列表?

Mysql 行连接

SQL 触发器 - 基础知识帮助

mysql - 如何连接这两个mysql查询?

mysql - 如何在 Mysql 中取消透视下表? [请求更好的方法]

sql - 如何使用 sqlite fts3 执行全文搜索

mysql - 如何创建由两个具有不同内容的相同表格组成的表格?

mysql - sql查询错误1060重复列错误 'nome'