需求反馈
如果优化器将原有的语句进行改写了,那么是否可以通过 show warnings; 来显示,这样可以帮助用户更清晰的去了解执行计划
【需求涉及的问题场景】
优化器将改写后的语句暴露出来
【期望的需求行为】
优化器将改写后的语句暴露出来
【需求可替代方案】
【背景信息】
explain analyze select count(*) from (select * from a order by c1) a;
这条语句我只是举个例子,没多大实际意义,这条语句其实在逻辑优化阶段把order by 这个动作去掉,改写为 select count(0) from a;
从执行计划来看应该是这么做得
mysql> explain select count(*) from (select * from a order by c1) a;
+--------------------------+---------+-----------+-----------------------------+-------------------------------+
| id | estRows | task | access object | operator info |
+--------------------------+---------+-----------+-----------------------------+-------------------------------+
| StreamAgg_8 | 1.00 | root | | funcs:count(1)->Column#4 |
| └─IndexReader_20 | 3.00 | root | | index:IndexFullScan_19 |
| └─IndexFullScan_19 | 3.00 | cop[tikv] | table:a, index:index_c1(c1) | keep order:true, stats:pseudo |
+--------------------------+---------+-----------+-----------------------------+-------------------------------+
3 rows in set (0.00 sec)
通过这个例子,我们想要tidb 将改写的语句通过show warnings; 来暴露出来帮助用户更好的去判断语句的执行过程
例如MySQL的行为
就可以通过这样的方式来将优化器改写的语句暴露出来,tidb 是不是也可以这样做呢?
个人的一点建议,不知道其他老师认为是否需要