在你开始给我点踩并否认我的回答之前,请注意我是一个完全的初学者:)。我已经搜索过答案了,但似乎它非常具体。
(作为程序员,我的理解是,如果select语句是for循环,那么就像是嵌套了几个循环:D)
这个问题是关于优化我的SQL查询,因为它需要几秒钟来获取数据。
SQL查询拆分如下:
第一次查询。
这个查询语句获取了一个列表(确切地说是在第二个查询中的列表),我想再往上一步。也就是说,再次在查询的IN子句中使用此列表并获取新的列表。 第二个 查询。
为了将这两个查询合并为一个,我执行了以下操作:
获取数据需要很长时间。有没有更好(更快的)方法来合并上述两个查询?如果没有,那么第一种解决方案,即使用2个查询,是否比使用单个查询更好?编辑:第一个查询返回一个条目列表(31050、131050、3912、103122、103165、7772、7782),然后我继续将其提供给第二个查询。全合一查询试图将这两个查询合并成一个,即进一步深入。请查看已批准答案的评论,结果发现我正在寻找的被称为分层查询。
(作为程序员,我的理解是,如果select语句是for循环,那么就像是嵌套了几个循环:D)
这个问题是关于优化我的SQL查询,因为它需要几秒钟来获取数据。
SQL查询拆分如下:
第一次查询。
SELECT *
FROM r_submenuitems
WHERE modifier1 IN (SELECT submenu_id FROM r_submenuitems WHERE item_id = 1068)
这个查询语句获取了一个列表(确切地说是在第二个查询中的列表),我想再往上一步。也就是说,再次在查询的IN子句中使用此列表并获取新的列表。 第二个 查询。
SELECT submenu_id
FROM r_submenuitems
WHERE modifier1 IN (31050, 131050,3912, 103122, 103165, 7772, 7782)
为了将这两个查询合并为一个,我执行了以下操作:
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),然后我继续将其提供给第二个查询。全合一查询试图将这两个查询合并成一个,即进一步深入。请查看已批准答案的评论,结果发现我正在寻找的被称为分层查询。
submenu_id
,这可以很容易地添加到我的查询中。除非你在问题中混淆了表的名称,否则都是相同的。 - Jorge Campos