【发布时间】:2016-10-24 21:59:57
【问题描述】:
我正在使用 Oracle Express 处理表。表Employees 有字段Employee 的First_Name、Last_Name 和他/她的Hire_Date。我的目标是检索从员工中最先被雇用的数据。
我写了这些查询,并开始考虑它们的复杂性。我假设第一个复杂度为 O(n logn),第二个复杂度为 O(n^2)。这只是我的假设(我对编程很陌生),我完全不确定。你能解释一下这些查询的复杂性是如何准确定义的吗?
SELECT *
FROM
(
SELECT Hire_Date, First_Name, Last_Name
FROM Employees
ORDER BY Hire_Date
)
WHERE ROWNUM <= 1
SELECT *
FROM Employees
WHERE Hire_Date =
(
SELECT MIN(Hire_Date)
FROM Employees
)
【问题讨论】:
-
很多情况取决于可用的索引。假设
hire_date上有一个索引,我希望两者都是 O(log n) 尽管我希望第一个查询更有效,因为它只需要访问表一次。如果您想进行更具体的讨论,包括实际的查询计划会很有帮助。