【 TiDB 使用环境】生产环境
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
执行sql的执行计划如下:基本出不来结果,表很大,我看是全表扫描,怎么样优化可以执行快一些
把on条件放到where试下
增加索引呢?另外我看stats:pseudo,是不是表也不健康了,分析一下表
1 个赞
先analyze下涉及的表看看
b表上建立一个tagname+datatime的联合索引试试看。
优化第一步,先加缺失的索引,有索引不走再看是为啥。
b表没有任何谓词。只能全表,全表你想怎么快呢?加谓词呀。没有谓词就是全表。你想让全表快。怎么可能呢。这个表全量数据没有谓词他是需要从tikv把数据全部传到tidb的。
看图是hash连接。B表有个索引结果集不多,你把它加上hint让B表和A表使用NL 连接试试。看看能不能快,如果还不行,想想办法 A表加谓词,搞个条件。
你把关联字段全部卸载where后面,
1 个赞
你先收集先统计信息,如果A表真的过滤出只有10条数据,可以拿A表去nestloop扫描B表
explain analyze看下
explain analyze
先收集统计信息,再explain analyze看看呢
先收集统计信息,然后看执行计划是否变化,查询出来只有10条记录的话,可以看看是否可以走nl,被驱动表的连接列创建索引
收集统计信息