返回数说广场
1
考虑如下语句:
select employee_id, last_name from employees where salary > (select avg(salary) from employees);
子查询将在什么时候执行?(D)
A、对于EMPLOYEES表的每条记录执行一次
B、和外部查询一起执行
C、在外部查询执行后
D、在外部查询执行前
解析:
- 在这个查询中,子查询首先被执行,因为它是一个标量子查询(即返回单个值的子查询),并且它被用作`WHERE`子句中的一个条件。数据库需要先计算出平均薪资,然后才能基于这个平均值来过滤`employees`表中的记录。
- 换句话说,数据库不会为`employees`表中的每条记录都执行一次子查询。这样做将是非常低效的,因为这将导致大量的重复计算。相反,数据库会先计算子查询的结果(即平均薪资),然后将这个值存储在内存中(或类似的地方),并在`WHERE`子句中使用这个值来过滤记录。
- 因此,子查询在外部查询(即主查询)开始执行之前就已经完成了它的工作。
0
1 270
分享
评论
热门数说



