我得到了这个非常具体的查询,它返回的正是我所需要的。正如我们所知,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/