【TiDB 使用环境】生产环境
【TiDB 版本】7.5.1
【操作系统】centos
【部署方式】物理机部署
【集群节点数】3
【遇到的问题:问题现象及影响】
背景:
tb_card 数据量 60w+,tb_customer 数据量 60w+
tb_customer表的c_no 和 tb_card表中c_customer 进行关联。
tb_customer 表索引情况如下:
tb_card 表索引如下:
生产环境中程序中运行了如下的一个sql,执行起来比较慢:
SELECT
a.c_no AS CustNo,
a.c_name AS CustName,
a.c_id AS IdCardNo,
a.c_tele AS Phone,
cd.c_cardno AS CardNo,
cd.c_status AS CardStatus
FROM
tb_card cd
INNER JOIN tb_customer a ON cd.c_org_id = a.c_org_id
AND cd.c_customer = a.c_no
WHERE
a.c_org_id = ‘8’
AND a.c_id = ‘513022199412206825’
实际执行的计划和预估的执行计划不一致:
预估计划如下:
实际执行计划如下:
两个表的健康度如下:
性能差很多,请教下各位可能是哪里的问题?
另外,如果脚本中强制使用tb_card 的 IX_tb_card_customer 索引时,效率就会提升很多。
是哪里影响tidb选择索引了?











