闭卷说明“从 SQL 到物理计划”的对象、成立条件和一个失败反例。
数据库系统 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
闭卷说明“顺序扫描与索引扫描成本”的对象、成立条件和一个失败反例。
闭卷说明“嵌套循环、哈希与归并连接”的对象、成立条件和一个失败反例。
闭卷说明“基数估计与统计信息”的对象、成立条件和一个失败反例。
闭卷说明“等价变换与谓词下推”的对象、成立条件和一个失败反例。
闭卷说明“EXPLAIN 与实际执行证据”的对象、成立条件和一个失败反例。
闭卷说明“系统化查询调优工作流”的对象、成立条件和一个失败反例。
应覆盖:索引扫描省不省 I/O 取决于选择率和聚簇性;返回比例很高时随机回表可能比顺序扫描更贵;规则:估算成本 ≈ 索引层 I/O + 命中 RID 对应的数据页 I/O;后者受聚簇因子影响;并能围绕“百万行表查询 40% 数据,非聚簇索引可能触发大量随机页访问,优化器选全表扫描并非失效”给出可执行或可计算的反查。
应覆盖:解析树先经绑定与逻辑重写,再把关系算子映射为扫描、过滤、排序、聚合和连接等物理算子;规则:等价不等于等成本;计划必须同时保持语义、NULL 规则和重复语义;并能围绕“同一 JOIN 可选择索引嵌套循环、哈希连接或排序归并,优化器按估算成本而非 SQL 书写顺序决定”给出可执行或可计算的反查。
应覆盖:优化器用行数、不同值数、直方图和相关性估算选择率;独立均匀假设失真会让后续连接误差级联;规则:等值谓词选择率常近似 1/V(A),但倾斜分布应使用频率或直方图;并能围绕“城市与邮编高度相关,分别估选择率再相乘会严重低估;多列统计或扩展统计可修正”给出可执行或可计算的反查。
应覆盖:嵌套循环适合小外表加内表索引,哈希适合等值连接,归并适合已有序输入或范围条件;内存不足都会溢写;规则:块嵌套循环 I/O 约 B(R)+ceil(B(R)/(M−2))·B(S);并能围绕“小型部门表连接百万员工且员工 dept_id 有索引,可索引嵌套循环;两张大无序表等值连接通常哈希更合适”给出可执行或可计算的反查。
应覆盖:EXPLAIN 展示估算,EXPLAIN ANALYZE 展示实际行数与时间;调优要找第一个估算大幅偏离或耗时异常节点;规则:误差倍率 = actual_rows / estimated_rows;沿计划自底向上找最早的数量级偏差;并能围绕“某连接估 10 行实际 10 万行,先修统计或谓词相关性,而不是盲目给最终排序加索引”给出可执行或可计算的反查。
应覆盖:选择下推、投影裁剪和连接重排可减少中间结果,但外连接、聚合、窗口与易变函数会限制安全改写;规则:改写前先证明结果多重集与 NULL 语义等价,再比较成本;并能围绕“对内连接把只依赖订单表的日期过滤提前,可先缩小订单;对左连接把右表条件乱下推可能改变保留行”给出可执行或可计算的反查。
应覆盖:先固定慢查询与参数,记录基线,再检查语义、等待、计划和数据分布,一次只改一个变量并验证回归;规则:调优完成标准是正确性不变、代表性负载改善、退化风险可监控且能回滚;并能围绕“优化报表前保存原结果哈希与关键样例;新索引上线后同时观测读延迟、写延迟、空间和计划稳定性”给出可执行或可计算的反查。