【发布时间】:2015-01-14 11:48:28
【问题描述】:
在您开始投票并拒绝我回答之前,请注意我是一个完整的初学者:)。我已经搜索了答案,但它似乎非常具体。
(作为一个程序员,我是怎么理解的,如果 select 语句 where for 循环,它就像一个循环里面一个循环里面一个循环:D)
问题是关于优化我的 sql 查询,因为获取数据需要几秒钟。
SQL 分解:
第一次。查询
SELECT *
FROM r_submenuitems
WHERE modifier1 IN (SELECT submenu_id FROM r_submenuitems WHERE item_id = 1068)
这个查询得到一个列表(准确地说是第二个查询中的列表),我想更上一层楼。 IE。再次在查询的 IN 子句中使用此列表并获取新列表。
第二次。查询
SELECT submenu_id
FROM r_submenuitems
WHERE modifier1 IN (31050, 131050,3912, 103122, 103165, 7772, 7782)
要将 2 个查询合并为 1 个,我执行了以下操作:
SELECT submenu_id FROM r_submenuitems
WHERE modifier1 IN (SELECT submenu_id FROM r_submenuitems
WHERE modifier1 IN (SELECT submenu_id FROM r_submenuitems
WHERE item_id = 1068))
获取数据需要很长时间。
有没有比这更好(获取更快)方法来合并上面的两个查询? 如果不是, 是第一个解决方案,即有 2 个查询比有一个多合一查询更好??
编辑: 第一个查询返回条目列表(31050、131050、3912、103122、103165、7772、7782)。然后我继续输入第二个查询。多合一查询试图将这两者合并为一个,即更深入 检查已批准答案的 cmets,结果发现我正在寻找的是所谓的分层查询。
【问题讨论】: