tidb对子查询支持性能不好,感觉比mysql性能差

【 TiDB 使用环境】测试
【 TiDB 版本】7.1.1,mysql5.7
【资源配置】
tidb:3台tikv、3台tidb,配置都是32核,128G配置
mysql:1台,4核,8G配置
表数据量一样,且是同一张表
mysql查询结果4秒,tidb查询结果144秒



他们执行计划分布如下

表里有多少数据呢?

600万
image

https://docs.pingcap.com/zh/tidb/stable/optimizer-hints#no_decorrelate

试下 NO_DECORRELATE()这个HINT,看有没有效果。
PS:这个HINT要放到子查询里

2 个赞

看了文档,这个hint为了使用apply算子的,但是楼主执行计划确实用了apply算子
image

能上传下explain analyze的结果吗

image
把这里拖长一点,看下tidb里用了哪两个索引

analyze没,走最优的索引了么,如果做多表关联聚合分析操作,可以用tiflash,很快的

返回多少数据?


无标题.xls (12 KB)

上传了execl版本的执行计划,方便大家仔细阅读执行计划
image
加任何hint都没优化效果

你上传的这个走的是tiflash啊

自动选择tiflash,因为我这个表有tiflash副本,理论上走tiflash也不会这么差的性能啊

聚合查询的时候tiflash超快,也是要看应用场景的

我强制走tikv,走tikv性能也很差,我晚点上传执行计划

你这个explain analyze执行了多久,这个实际走的tiflash ,前面的explain走的tikv ,你SQL上加个这个hint /+ READ_FROM_STORAGE(TIKV[ca,aa])/ 试试


tikv_explain.xls (12.5 KB)
这是走tikv的执行计划,走tikv也要150秒左右

用户 HASH_JOIN(t1_name [, tl_name …]) HINT试试呢

严重怀疑是Tidb使用的存储太拉垮 600W数据索引扫描都要近1分钟

网络情况也可以看下。