为什么SHOW TABLE STATUS显示Rows少了40%

测试环境中,有一个表执行 SHOW TABLE STATUS
时看到的 rows
结果总是和真实数量相差了将近40%:

-- 执行SHOW TABLE STATUS,看到Rows只有约655万行数据<br>greatsql> SHOW TABLE STATUS LIKE 't1'G<br>*************************** 1. row ***************************<br>           Name: t1<br>         Engine: InnoDB<br>        Version: 10<br>     Row_format: Dynamic<br>           Rows: 6553584<br> Avg_row_length: 9375<br>    Data_length: 61444456448<br>Max_data_length: 0<br>   Index_length: 0<br>      Data_free: 4194304<br> Auto_increment: NULL<br>    Create_time: 2024-03-01 15:04:31<br>    Update_time: NULL<br>     Check_time: NULL<br>      Collation: utf8mb4_bin<br>       Checksum: NULL<br> Create_options:<br>        Comment:<br><br>-- 执行COUNT(*)看到实际有1000万行数据<br>greatsql> select count(*) from t1;<br>+----------+<br>| count(*) |<br>+----------+<br>| 10000000 |<br>+----------+<br><br>-- 表结构如下<br>greatsql> SHOW CREATE TABLE t1G<br>*************************** 1. row ***************************<br>       Table: t1<br>Create Table: CREATE TABLE `t1` (<br>  `A0` bigint NOT NULL,<br>  `A1` double DEFAULT NULL,<br>  `A2` decimal(40,0) DEFAULT NULL,<br>  `A3` double DEFAULT NULL,<br>  `A4` decimal(5,2) DEFAULT NULL,<br>  `A5` smallint DEFAULT NULL,<br>  `A6` int DEFAULT NULL,<br>  `A7` bigint DEFAULT NULL,<br>  `A8` decimal(19,0) DEFAULT NULL,<br>  `A9` decimal(38,0) DEFAULT NULL,<br>  `A10` decimal(40,0) DEFAULT NULL,<br>  `A11` datetime DEFAULT NULL,<br>  `A12` datetime(6) DEFAULT NULL,<br>  `A13` datetime DEFAULT NULL,<br>  `A14` datetime(3) DEFAULT NULL,<br>  `A15` datetime(6) DEFAULT NULL,<br>  `A17` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,<br>  `A18` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,<br>  `A19` char(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,<br>  `A20` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,<br>  `A21` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,<br>  `A22` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,<br>  `A23` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,<br>  `A24` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,<br>  `A25` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,<br>  `A26` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,<br>  `A27` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,<br>  `A28` varchar(600) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,<br>  `A29` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,<br>  PRIMARY KEY (`A0`),<br>  KEY `a0` (`A0`)<br>) ENGINE=InnoDB;<br>