看上去是没有mpp。
set tidb_allow_mpp=ON;
set tidb_enforce_mpp=ON;
在session级别开这两个变量,再看看结果。
看上去是没有mpp。
set tidb_allow_mpp=ON;
set tidb_enforce_mpp=ON;
在session级别开这两个变量,再看看结果。
已经set了强制mpp, 就是这个执行计划。
我这次找了个分区表,写了个和你差不多的。但是结果是这样的。 ![]()
建议查查算子下推的黑名单设置。看看这个表里是否有结果,mysql.expr_pushdown_blacklist。
还有就是我的tiflash是2副本2实例。
tag_total_mid_frequent_interval_detailis a partition table which is not supported when @@tidb_partition_prune_mode=static.靠谱,我也发现了是这个参数的问题。 ![]()
session级别小调一下看看。
union 应该下推吗?它不是应该在tidb层面去重吗?下推到tikv去重之后到tidb还是得去重啊
感觉这就和取最大值一样,每个tikv节点取最大值,然后tidb节点再取最大值。层层筛选,节节提速。
直接推给tiflash去重是最好的。mpp会在tiflash节点之间交换数据,所以可以直接去重,把算好的结果给tidb。