stackoverflow上有人问如何选择父对象具有特定值的所有子对象。
我想到了这个答案:
SELECT label, parent_id
FROM folders
WHERE parent_id IN (SELECT id FROM folders WHERE uniq='w2d4f6')
其他人回答了这个问题:
SELECT b.label, b.parent_id
FROM folders a, folders b
WHERE a.uniq = 'w2d4f6' AND b.parent_id = a.id
这些查询的结果是相同的。
当我对这些查询使用explain时,它们都使用2个子查询。现在我想知道在这种情况下,什么查询是最好的选择(查看性能)。
1条答案
按热度按时间1l5u6lss1#
最好的查询是
它应该与您提供的第二个查询具有相同的执行计划,但它符合ansi-92 sql。
JOIN
索引通常比嵌套查询更有效,但这取决于许多其他参数(索引只是其中之一)。