A. 分区裁剪仅在 SQL 执行引擎的运行时阶段发生,通过逐行判断数据所属分区来动态跳过无关分区。
B. 分区裁剪在优化器生成执行计划阶段完成,优化器根据查询条件和分区边界静态计算需要访问的分区集合,执行时直接扫描这些分区。
C. 分区裁剪只有在 WHERE 条件中包含分区键等值条件时才会触发,范围条件和 IN 列表无法触发裁剪。
D. 对于二级分区表,分区裁剪只能在一级分区层面生效,无法裁剪到二级分区级别。
A. 分区裁剪仅在 SQL 执行引擎的运行时阶段发生,通过逐行判断数据所属分区来动态跳过无关分区。
B. 分区裁剪在优化器生成执行计划阶段完成,优化器根据查询条件和分区边界静态计算需要访问的分区集合,执行时直接扫描这些分区。
C. 分区裁剪只有在 WHERE 条件中包含分区键等值条件时才会触发,范围条件和 IN 列表无法触发裁剪。
D. 对于二级分区表,分区裁剪只能在一级分区层面生效,无法裁剪到二级分区级别。
解析 :
分区裁剪(Partition Pruning)是 OceanBase 优化器在计划生成阶段(编译时) 完成的重要优化。优化器会根据查询的 WHERE 条件中的分区键过滤条件,结合表的分区定义(如 RANGE 边界、LIST 值列表、HASH 取模等),静态计算出需要扫描的分区 ID 集合,并将裁剪结果嵌入执行计划中。执行引擎在运行时直接扫描裁剪后的分区,不会逐行判断分区归属。这种编译时裁剪的方式避免了运行时逐行判断的开销。
BETWEEN 、> 、< )和 IN 列表同样可以触发分区裁剪,只要条件中包含分区键且边界可计算。正确答案:B
very good
加油加油