【发布时间】:2022-01-25 00:27:20
【问题描述】:
我目前正在学习 SQL 课程并尝试了解查询的效率。
给定这个查询,它的效率如何:
SELECT *
FROM Customers
WHERE Age = (SELECT MIN(Age)
FROM Customers)
我想了解的是,如果子查询在开始时运行一次,然后查询是 O(n+n)? 还是每次您经历客户的年龄时都会运行子查询,这使得它成为 O(n^2)? 谢谢!
【问题讨论】:
-
SQL 是声明性的,您只需告诉 什么 您想要 而不是 如何获得它。 DBMS 会自己想办法获取它。 DBMS 发现,这样一来,取决于很多事情,甚至可能会根据表中当前的实际数据而有所不同。所以你的问题没有答案。您需要查看 DBMS 为查询生成的执行计划并获得 其 运行时间复杂度。但正如我所说,这不是查询的复杂性。
-
好的,非常感谢!
-
@stickybit 有没有机会我可以私下联系你,询问与此相关的其他问题?
-
不,没有。
标签: sql performance