【 TiDB 使用环境】生产环境
【 TiDB 版本】V6.5.1
【复现路径】
【遇到的问题:问题现象及影响】
一张不到1亿条记录的表,使用如下select count查询非常慢,经常要二三十秒。查询条件列已经加了索引,不知道慢的原因是什么。
explain analyze SELECT count(c_ckey)
FROM vm_company_derived_variables_all
WHERE (operated_years > 2)
AND (c_regist_capi > 1000.0)
【资源配置】
一台物理机,虚拟出10台,PD:3台,TIDB:2台,每台32G内存,TIKV:4台,每台32G内存。硬盘SSD。
【附件:截图/日志/监控】
explain analyze 如附件
explain.txt (1.8 KB)
ALTER TABLE vm_company_derived_variables_all ADD INDEX idx_operated_years_c_regist_capi (operated_years, c_regist_capi);
试下
具体这个表已经加了什么索引?查询两个条件有有索引吗
count(1)试试呢
count后面写什么都不影响速度的
查询的两个列都有索引
查询的两个列都有索引,我只是举了这个例子,需要查询的列还有很多,条件组合也不固定,难道都要加组合索引?
单表查询要不要试试tiflash
列存tiflash统计查询比较快
这种情况下极力推荐上tiflash,不然创建太多索引维护成本还是比较高的。
另外distsql_concurrency: 256,这种设置太极端了,遇到大查询容易让集群整体抖动,还是建议默认值15。
列存tiflash统计查询比较快
更新统计信息没
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。