gpt4 book ai didi

SQL 连接与 SQL 子查询(性能)?

转载 作者:行者123 更新时间:2023-12-03 04:50:31 25 4
gpt4 key购买 nike

我想知道我是否有一个像这样的加入查询 -

Select E.Id,E.Name from Employee E join Dept D on E.DeptId=D.Id

和一个子查询类似的东西 -

Select E.Id,E.Name from Employee Where DeptId in (Select Id from Dept)

当我考虑性能时,两个查询中哪一个会更快,为什么

还有什么时候我应该选择其中一种而不是另一种?

抱歉,如果这太微不足道了,之前就问过,但我对此感到困惑。另外,如果你们能给我建议我应该用来衡量两个查询性能的工具,那就太好了。非常感谢!

最佳答案

嗯,我相信这是一个“古老但黄金”的问题。答案是:“这要看情况!”。性能是一个如此微妙的主题,以至于说“永远不要使用子查询,总是加入”就太愚蠢了。在以下链接中,您将找到一些我认为非常有帮助的基本最佳实践:

我有一个包含 50000 个元素的表,我要查找的结果是 739 个元素。

我最初的查询是这样的:

SELECT  p.id,
p.fixedId,
p.azienda_id,
p.categoria_id,
p.linea,
p.tipo,
p.nome
FROM prodotto p
WHERE p.azienda_id = 2699 AND p.anno = (
SELECT MAX(p2.anno)
FROM prodotto p2
WHERE p2.fixedId = p.fixedId
)

执行时间为 7.9 秒。

我最后的查询是这样的:

SELECT  p.id,
p.fixedId,
p.azienda_id,
p.categoria_id,
p.linea,
p.tipo,
p.nome
FROM prodotto p
WHERE p.azienda_id = 2699 AND (p.fixedId, p.anno) IN
(
SELECT p2.fixedId, MAX(p2.anno)
FROM prodotto p2
WHERE p.azienda_id = p2.azienda_id
GROUP BY p2.fixedId
)

花了 0.0256 秒

好 SQL,好。

关于SQL 连接与 SQL 子查询(性能)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3856164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com