【 TiDB 使用环境】生产环境
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
sql是4个子查询union all到一起的,为什么当union all 3个时候子查询跑很快,当超过三个时候就非常慢了呢
本身是点查,结果超过3个时候变成了全表扫
table full scan
点查询
【资源配置】
【附件:截图/日志/监控】
【 TiDB 使用环境】生产环境
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
sql是4个子查询union all到一起的,为什么当union all 3个时候子查询跑很快,当超过三个时候就非常慢了呢
本身是点查,结果超过3个时候变成了全表扫
table full scan
【资源配置】
【附件:截图/日志/监控】
贴出实际的执行计划看看
贴出来了
sql能发出来吗?
SELECT a
.I_REF
,
a
.CH_BROKER_ID
,
a
.CH_DEALER_ID
,
IFNULL(b
.CH_DEALER_NAME
, _UTF8MB4’‘) AS CH_DEALER_NAME
,
_UTF8MB4’’ AS CH_PAY_CHANNEL
,
IFNULL(d
.CH_LIC_NO
, _UTF8MB4’‘) AS CH_LIC_NO
,
a
.CH_ID_CARD_UC_ENCRYPT
,
t1
.I_MEMBER_ID
,
a
.CH_REAL_NAME_ENCRYPT
,
if(a.I_USER_REAL_AMOUNT = 0,
if(a.I_TAX_TYPE = 1, (a.I_AMOUNT - a.I_TAX_AMOUNT), (a.I_AMOUNT - a.I_USER_FEE)),
a.I_USER_REAL_AMOUNT) I_AMOUNT,
a
.D_FINISHED_TIME
,
ifnull(e.CH_TAX_MODE,’‘) CH_TAX_MODE,
ifnull(e.CH_INCOME_MODE,’') CH_INCOME_MODE
FROM t1
LEFT JOIN a
ON t1
.CH_CARD_NO_UC
= a
.CH_ID_CARD_UC_ENCRYPT
LEFT JOIN b
ON a
.CH_DEALER_ID
= b
.CH_DEALER_ID
LEFT JOIN c
ON a
.I_REF
= c
.I_REF
LEFT JOIN d
ON a
.I_REF
= d
.I_BIZ_REF
left join e on a.CH_BROKER_ID=e.CH_BROKER_ID
WHERE a
.I_STATUS
= 1
AND b
.I_CREATED_TYPE
= 0
AND b
.I_DEALER_ATTRIBUTE
= 1
AND c
.I_REF
IS NULL
AND t1.B_IS_DELETE=0
每段sql都类似这种,只是a这个表查的不同的底表
你的意思是你是4段类似的sql union all,每段单独执行都不慢,但是union all完了很慢吗?
看贴图引擎走的不一样,估计是执行计划不对。这类 tp 类 SQL。直接放 tikv 上跑。不要依赖 cbo 去选择 engine
对,每个sql单独执行很快
我发现个问题
第四个表的底表结构跟前三个不太一样,所以比较慢,但是第四个单独查询也很快的
怎么直接放到tikv上跑啊
看官网 tiflash 使用那块 关键字是 engine
第四个sql单独执行的执行计划也是走的tiflash吗?