半/反连接、LATERAL 与流式查询

共 72 题
#

1. 反连接的执行算法,Hash Anti Join、Merge Anti Join、Bitmap Anti Join?

A 只有一种算法
B Hash Anti Join 用哈希 ✓ 正确答案
C 与实现无关
D 反连接不需算法
#

2. 反连接(ANTI JOIN)的语义,返回左表中在右表无匹配的行?

A 返回匹配行
B 返回无匹配行 ✓ 正确答案
C 与半连接相同
D 返回全部行
#

3. MySQL 中如何识别半连接与反连接的执行计划(EXPLAIN 中的 FirstMatch、LooseScan)?

A 无策略名
B 无法识别
C 与 EXPLAIN 无关
D FirstMatch 是半连接策略 ✓ 正确答案
#

4. NOT EXISTS 与 NOT IN 在 NULL 上的语义差异?

A NOT EXISTS 受 NULL 影响
B NOT IN 在含 NULL 时出错 ✓ 正确答案
C NOT IN 更安全
D 两者无差异
#

5. PostgreSQL 中 Semi Join 的优化策略?

A 用 Hash Semi Join 实现 ✓ 正确答案
B 无半连接优化
C 与 EXPLAIN 无关
D 只能 Nested Loop
#

6. Anti Join 与 NOT IN 的等价场景?

A 永远等价
B 与 NULL 无关
C 永不等价
D 子查询无 NULL 时等价 ✓ 正确答案
#

7. Bitmap Semi Join 的应用场景?

A 与位图无关
B 用位图判断存在性 ✓ 正确答案
C 只能用于 INNER
D 无法实现
#

8. INNER JOIN 与 SEMI JOIN 的本质差异?

A INNER 不重复行
B 两者等价
C SEMI 返回右表行
D SEMI 每行只出现一次 ✓ 正确答案
#

9. LEFT JOIN + IS NULL 与 NOT EXISTS 的等价?

A 语义不同
B 两者等价 ✓ 正确答案
C 无法转换
D 与反连接无关
#

10. MySQL 8.0 的 Semi Join 优化(FirstMatch、Duplicate Weedout)?

A 无优化
B 只多扫描
C FirstMatch 匹配即停止 ✓ 正确答案
D 无法提升
#

11. NOT EXISTS 与 LEFT JOIN 的性能对比?

A 优化器可能转相同计划 ✓ 正确答案
B NOT EXISTS 总是更慢
C LEFT JOIN 总是更快
D 无法比较
#

12. PostgreSQL 中 Anti Join 的实现策略?

A 无反连接
B 用 Hash Anti Join 实现 ✓ 正确答案
C 只能 Nested Loop
D 与 EXPLAIN 无关
#

13. PostgreSQL 中 Semi Join 的 EXPLAIN 输出解读?

A 与计划无关
B 不显示
C 无法解读
D 显示 Semi Join 节点 ✓ 正确答案
#

14. SELECT a FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t1.id=t2.id) 的语义?

A 返回 t2 数据
B 与 t1 无关
C 等价于半连接 ✓ 正确答案
D 无法优化
#

15. Semi Join 与 IN 子查询的等价证明?

A 无法转换
B 语义完全不同
C IN 可转为半连接 ✓ 正确答案
D 与 NULL 无关
#

16. 反连接的优化器选择(Hash Anti vs Nested Loop Anti)?

A 固定算法
B 与统计无关
C 无法选择
D 按代价选择 ✓ 正确答案
#

17. LATERAL JOIN 与相关子查询的等价关系?

A 完全无关
B 可等价改写 ✓ 正确答案
C 不能引用外层
D 语义不同
#

18. LATERAL 与普通子查询的根本差异,是否引用外层表的列?

A LATERAL 可引用外层列 ✓ 正确答案
B 普通子查询可引用外层列
C 两者相同
D 都不能引用
#

19. LATERAL 关键字的语义,FROM 子句中的相关子查询(每行计算)?

A 只计算一次
B 不能引用外层
C 与子查询无关
D 每行计算一次 ✓ 正确答案
#

20. LATERAL 在 PostgreSQL、MySQL 8.0.14+、Oracle 12c+ 中的支持情况?

A MySQL 早期版本支持
B PostgreSQL 原生支持 ✓ 正确答案
C Oracle 不支持
D 所有数据库一致
#

21. LATERAL 的常见用例,取每组 Top N、JSON 展开、相关标量子查询?

A 只能取单行
B 可取每组 Top N ✓ 正确答案
C 不能用于 JSON
D 无实际用途
#

22. CROSS APPLY 与 LATERAL INNER JOIN 的等价?

A 无关
B 等价 OUTER
C CROSS APPLY 等价 LATERAL INNER JOIN ✓ 正确答案
D 无法对应
#

23. LATERAL 与 GROUP BY 的协同?

A 不能聚合
B 无法协同
C LATERAL 内可聚合 ✓ 正确答案
D 与 GROUP 无关
#

24. LATERAL 与 LIMIT 的协同?

A 不能使用 LIMIT
B 与 LIMIT 无关
C LIMIT 在 LATERAL 外
D 用于每组 Top N ✓ 正确答案
#

25. LATERAL 与 OFFSET 分页的取舍?

A 两者等价
B OFFSET 用于每组
C LATERAL 适合每组取 N ✓ 正确答案
D LATERAL 用于深分页
#

26. ORDER BY 与 LIMIT 的协同,Top-N 优化(TopN Heap Sort)?

A 全量排序
B 与 LIMIT 无关
C 无优化
D 只排序前 N 行 ✓ 正确答案
#

27. 排序算法,内存排序 vs 磁盘归并排序(External Merge Sort)的工作原理?

A 总是内存排序
B 无 I/O
C 与排序无关
D 数据超内存时用磁盘归并 ✓ 正确答案
#

28. MySQL 中 LATERAL 的限制(IN/EXISTS 子查询中不能引用外层)?

A 仅用于 FROM 子句 ✓ 正确答案
B 无限制
C 不能引用外层
D 可用于任何位置
#

29. OUTER APPLY 与 LATERAL LEFT JOIN 的等价?

A 两者等价 ✓ 正确答案
B 无关
C 等价 INNER
D 无法对应
#

30. PostgreSQL LATERAL 的优化技巧?

A 无需索引
B 与索引无关
C 全表扫描最优
D 内层需走索引 ✓ 正确答案
#

31. SELECT t1.*, sub.* FROM t1, LATERAL (SELECT * FROM t2 WHERE t2.id=t1.id LIMIT 1) sub 的语义?

A 返回所有 t2 行
B 无匹配行保留
C 每行取 t2 匹配第一条 ✓ 正确答案
D 与 LIMIT 无关
#

32. ORDER BY 的执行阶段,在 SELECT 投影后、最终返回前的全排序代价?

A 无排序
B 在返回前全排序 ✓ 正确答案
C 总是免费
D 与 SELECT 无关
#

33. 索引排序(Index Scan)与显式排序的取舍,ORDER BY 命中索引时的零成本?

A 总是显式排序
B 命中索引可避免显式排序 ✓ 正确答案
C 索引无帮助
D 与 ORDER BY 无关
#

34. DISTINCT ON (col) 在 PostgreSQL 的语义?

A 返回全部行
B 返回每组第一行 ✓ 正确答案
C 与 ORDER BY 无关
D MySQL 支持
#

35. DISTINCT 与 SELECT * 的兼容性?

A 对单列去重
B 对整行去重 ✓ 正确答案
C 报错
D 与列无关
#

36. DISTINCT 的索引优化?

A 索引无帮助
B 索引可加速去重 ✓ 正确答案
C 与索引无关
D 总需排序
#

37. GROUP BY 与 ORDER BY 的协同?

A 顺序无关
B 只能引用普通列
C 无法协同
D ORDER BY 可引用聚合列 ✓ 正确答案
#

38. LIMIT 与 OFFSET 在排序后的应用?

A 先截取再排序
B 先排序再截取 ✓ 正确答案
C 顺序无关
D 无排序
#

39. MySQL 的 filesort 优化?

A 与排序无关
B 只能用磁盘
C 无法优化
D 是 MySQL 的排序操作 ✓ 正确答案
#

40. ORDER BY 与覆盖索引的取舍?

A 索引无帮助
B 增加查询成本
C 与索引无关
D 覆盖索引可避免排序与回表 ✓ 正确答案
#

41. MySQL InnoDB 游标的实现,是否物化?与 JDBC ResultSet 的交互?

A 与 JDBC 无关
B 总是流式
C 默认物化结果集 ✓ 正确答案
D 不缓冲
#

42. PostgreSQL 中 PL/pgSQL 游标与 SQL 游标的差异?

A 完全一样
B 无区别
C 用途不同 ✓ 正确答案
D 只有一种
#

43. 显式游标与隐式游标的差异,SELECT 自动返回的游标?

A 隐式游标需手工管理
B 两者相同
C 无显式游标
D 显式游标需显式 FETCH ✓ 正确答案
#

44. 服务端游标(Server-side Cursor)与客户端游标(Client-side Cursor)的资源占用差异?

A 客户端游标占用服务端
B 两者相同
C 服务端游标占用服务端内存 ✓ 正确答案
D 无资源占用
#

45. 流式结果(Streaming Result)协议,MySQL 的 unbuffered result、PostgreSQL 的游标分批读取?

A 与内存无关
B 一次性加载
C 逐行拉取减少内存 ✓ 正确答案
D 无法流式
#

46. 游标的可滚动性(Scrollable),FORWARD ONLY、SCROLL?

A SCROLL 可前后移动 ✓ 正确答案
B FORWARD ONLY 可回溯
C 两者相同
D 无滚动概念
#

47. 游标的敏感性(Sensitivity),INSENSITIVE、SENSITIVE、ASENSITIVE?

A SENSITIVE 不感知变化
B 两种相同
C INSENSITIVE 基于快照 ✓ 正确答案
D 无敏感性
#

48. 游标(Cursor)的本质,服务端状态化结果集迭代器?

A 一次性结果
B 无状态
C 状态化的结果集迭代器 ✓ 正确答案
D 与结果集无关
#

49. 游标的 HOLD 特性,事务提交后游标是否仍可用?

A COMMIT 后仍可用 ✓ 正确答案
B 提交后关闭
C 与事务无关
D 回滚后保留
#

50. DECLARE c CURSOR FOR SELECT ... 的语法?

A 声明游标 ✓ 正确答案
B 直接取行
C 关闭游标
D 与 SELECT 无关
#

51. JDBC 中 fetchSize 参数与流式结果?

A 一次性取全部
B 与内存无关
C 无法设置
D 控制每批拉取行数 ✓ 正确答案
#

52. MySQL 中游标的限制(部分存储引擎)?

A 游标只读单向 ✓ 正确答案
B 可更新
C 无限制
D 可滚动
#

53. OFFSET 大分页与游标的取舍?

A 两者等价
B OFFSET 更高效
C 游标避免深分页扫描 ✓ 正确答案
D 游标更慢
#

54. PostgreSQL 中游标的 WITH HOLD 选项?

A 带实时快照
B 与事务无关
C 不物化
D 提交后仍可用 ✓ 正确答案
#

55. SQL Server 的 keyset-driven 与 static 游标?

A static 基于快照 ✓ 正确答案
B 两者相同
C keyset 基于快照
D 无类型
#

56. cursor_tuple_fraction(PostgreSQL)参数?

A 与游标无关
B 固定值
C 影响游标查询计划 ✓ 正确答案
D 只影响插入
#

57. Oracle 的 LATERAL 实现细节?

A 与 APPLY 无关
B 所有版本支持
C 不支持
D 12c+ 支持 ✓ 正确答案
#

58. DISTINCT 的去重算法,Hash Aggregate、Sort-based Unique?

A 只有一种算法
B 与排序无关
C 可用哈希去重 ✓ 正确答案
D 无法实现
#

59. 多列排序的字典序,ORDER BY a, b 的二级排序?

A 先按 a 再按 b ✓ 正确答案
B 只按 b
C 只按 a
D 顺序无关
#

60. 稳定排序(Stable Sort)与不稳定排序的差异,相同键值的顺序保证?

A 不稳定排序也保持
B 稳定排序保持相同键值顺序 ✓ 正确答案
C 与排序无关
D 无差别
#

61. ORDER BY 与 DISTINCT 的执行顺序?

A 顺序无关
B 可任意列
C ORDER BY 列需在 SELECT 中 ✓ 正确答案
D 无法协同
#

62. FETCH NEXT FROM c INTO var 的用法?

A 取上一行
B 与变量无关
C 关闭游标
D 取下一行赋给变量 ✓ 正确答案
#

63. PL/pgSQL 中 REF CURSOR 与变量绑定?

A 静态查询
B 与函数无关
C 无法使用
D 可返回动态游标 ✓ 正确答案
#

64. EXISTS 与 IN 在 SQL 中如何转换为半连接/反连接?优化器的自动转换规则?

A 无法转换
B 自动转为半连接 ✓ 正确答案
C 与优化器无关
D 需手动改写
#

65. DISTINCT + 半连接的性能?

A 与 DISTINCT 无关
B 需再 DISTINCT
C 无法组合
D 半连接已去重 ✓ 正确答案
#

66. EXISTS 与 COUNT 的差异?

A COUNT 只判断存在
B 两者等价
C EXISTS 找到即停 ✓ 正确答案
D COUNT 更快
#

67. 半连接的代价估算(Hash Semi 的构建代价)?

A 无代价
B 与统计无关
C 固定代价
D 含构建哈希代价 ✓ 正确答案
#

68. 排序的代价模型(磁盘 I/O)?

A 磁盘 I/O 是主要代价 ✓ 正确答案
B 与内存无关
C 固定
D 无 I/O
#

69. CLOSE c 的资源释放?

A 与资源无关
B 打开游标
C 取行
D 释放游标资源 ✓ 正确答案
#

70. 游标与 FOR 循环的对比?

A 需手动管理
B 两者无关
C FOR 循环隐式管理游标 ✓ 正确答案
D FOR 循环不能用游标
#

71. 游标的性能,逐行处理 vs 集合处理?

A 性能最好
B 性能差 ✓ 正确答案
C 与集合相同
D 推荐使用
#

72. 游标的错误处理(NOT FOUND)?

A 表示锁冲突
B 表示无更多行 ✓ 正确答案
C 表示错误
D 与结束无关