select count 结果为0 , 但是select limit 却可以看到有数据

【 TiDB 使用环境】生产环境
【 TiDB 版本】 v6.5.9
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
我用select count(*) from database.table 返回结果为0,
但是select * from database.table 却是有数据的, 这是为什么?

执行计划发一下看看呢,是不是都走的tikv?

也是这种导入场景么?

表和索引不一致?表有数据,索引没数据,count(*)走索引了。

admin check一下表和索引

执行计划也发下

这是两个的执行计划, 也是tidb lightning导入的数据

这个是如何操作?

出现这个关键字,需要先将表重新anlyze一下,analyze table xxx。然后再执行select count试试
image

感觉你的情况和这个比较像。看里面的解决方案是 重新导入。

怎么复现这个问题?

一个走了索引扫描,一个走了全表扫描。索引和表数据对不上了

analyze table 操作了一下, 因为需要重新导入数据, 对表名重新命名了一下

哦,还是数据不一致。check一下呢?
https://docs.pingcap.com/zh/tidb/v6.5/sql-statement-admin-check-table-index#admin-check-tableindex


这是ADMIN check有问题吗?

对,这个是有问题,重建一下索引吧。

https://docs.pingcap.com/zh/tidb/v6.5/troubleshoot-data-inconsistency-errors#error-8223

可以参考这个解决试试。 删除索引重新创建。

真的的可以, 感谢大佬!
img_v3_02cq_283954bf-b86e-4968-a8fa-a4fecdd28a3g

1 个赞

:handshake: :handshake: :handshake:

第一次看到这个问题,又学到一招。

学习了。。。。。