怎么判断SQL有没有走分区裁剪?
1 个赞
如何判断SQL是否使用了分区裁剪
根据检索到的文档片段,可以提供一些方法来帮助你判断SQL语句是否使用了分区裁剪。以下是一些具体的方法:
-
使用EXPLAIN命令查看执行计划
通过EXPLAIN命令可以查看SQL语句的执行计划。在执行计划中,如果存在partitions字段,并且该字段指定了具体的分区信息,则说明查询过程中进行了分区裁剪。例如,在分区裁剪 → 一级分区裁剪的基本原理 → Hash/List 分区和分区裁剪 → 二级分区裁剪的基本原理两个示例中,可以看到执行计划中的partitions字段明确标识了访问的分区。示例代码:
obclient> EXPLAIN SELECT * FROM t1 WHERE c1 + c2 = 1 \G *************************** 1. row *************************** Query Plan: =================================== |ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------- |0 |TABLE SCAN|t1 |5 |1303| ==================================== ## Outputs & filters: 0 - output([t1.c1], [t1.c2]), filter([t1.c1 + t1.c2 = 1]), access([t1.c1], [t1.c2]), partitions(p1) -
查看诊断项中的“参与分区数过多”项
使用OceanBase的SQL Diagnoser工具进行SQL性能诊断时,有一个诊断项是“参与分区数过多”。如果这个诊断项被触发,说明查询过程中可能存在不必要的分区访问,即没有完全利用分区裁剪优化查询性能。参考内置诊断项中的描述,这一诊断项能够帮助识别那些参与计算的分区数量异常多的情况,这可能意味着分区裁剪未能充分生效或查询条件不够精确。
通过以上两种方式,你可以较为准确地判断SQL语句是否使用了分区裁剪。希望这些信息对你有所帮助!如果你还有其他问题,请继续提出。
检索到的文档如下:
1 个赞
666
1 个赞
看执行计划。