【 TiDB 使用环境】生产环境
【 TiDB 版本】
v6.5.3
【复现路径】做过哪些操作出现的问题
升级到6.5.3 之后,SQL变慢
表的健康度都是95以上,但是6.5.3的选择错误的索引
【遇到的问题:问题现象及影响】
表的健康度都是95以上,但是6.5.3的选择错误的索引。导致业务变慢
【资源配置】
【附件:截图/日志/监控】
表结构
6.5.3的执行计划
5.4.3的执行计划
【 TiDB 使用环境】生产环境
【 TiDB 版本】
v6.5.3
【复现路径】做过哪些操作出现的问题
升级到6.5.3 之后,SQL变慢
表的健康度都是95以上,但是6.5.3的选择错误的索引
【遇到的问题:问题现象及影响】
表的健康度都是95以上,但是6.5.3的选择错误的索引。导致业务变慢
【资源配置】
【附件:截图/日志/监控】
表结构
6.5.3的执行计划
5.4.3的执行计划
统计信息不准确吧 做个analyze table
统计信息健康度99%
where 条件里三个字段为什么不建一个组合索引
可能优化器认为使用task_id索引效率更低,你可以强制使用task_id 试试,对比一下
又分析了一下,可以了,奇怪
一般这种都是统计信息不准引起的
刚才统计信息是99%竟然选错了索引,这个优化器有问题呀
另一个表也是这种写法,analyze 5次了,还是选择错误的索引
你是从哪个版本升级上来的?show variables like “%tidb_enable_index_merge%” 看下这个系统参数是不是on
信息不及时
应该是6.5引进了排序字段使用索引优先级较高,而5.4较低,所以5.4只能走id索引而6.5会走到status和create_time联合索引,不行用hint指定下索引吧
排序字段使用索引 这个可以关掉吗?
那三个字段建一个联合索引算了
建一个task_id和case_status的索引可以,奇怪优化器为什么不选择使用task_id这个单列索引
直接用hint指定索引吧,/*+ USE_INDEX(t1, idx1) */
排序字段使用索引 这个哪里有说明嘛
5.4.3的时候,为什么没有单独排序的算子,好奇?