我使用的数据库,恕我直言,设计不佳,但也许只是我不理解它。无论如何,我有一个提取正确信息的查询,但它确实减慢了我的 php 脚本。我希望有人可以看看这个,让我知道嵌套查询到这个深度是否不好,以及是否有一种方法可以根据下面的 sql 语句中描述的关系来简化查询。
SELECT name
FROM groups
WHERE id = (SELECT DISTINCT immediateparentid
FROM cachedgroupmembers
WHERE groupid = (SELECT g.id AS AdminCc
FROM Tickets t, groups g
WHERE t.Id = 124 AND t.id = g.instance AND g.type = 'AdminCc')
AND immediateparentid <> (SELECT g.id AS AdminCc
FROM Tickets t, groups g
WHERE t.Id = 124 AND t.id = g.instance AND g.type = 'AdminCc'))
请帮忙
更新:
这是使用 Explain 的输出
您可能需要右键单击并选择“查看图像”以使文本清晰。
最佳答案
据我所知,您可以消除一个子选择。
SELECT name
FROM groups
WHERE id = (
SELECT DISTINCT immediateparentid
FROM cachedgroupmembers
WHERE groupid = (
SELECT g.id
FROM Tickets t, groups g
WHERE t.Id = 124 AND t.id = g.instance AND g.type = 'AdminCc'
) AND immediateparentid != groupid
)
关于mysql - 如何优化这个mysql查询?运行缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14142039/