user1409935 Asked: 2012-11-21 19:55:09 +0800 CST2012-11-21 19:55:09 +0800 CST 2012-11-21 19:55:09 +0800 CST 我的 SQL 服务器在不同时间显示不同的结果和相同的查询执行 772 当我从 MySQL 服务器执行以下查询时,即使数据库稳定并且除我之外的任何人都没有使用它,它每次都会向我显示不同的输出。 SELECT TABLE_NAME , table_rows FROM information_schema.tables WHERE table_schema='DBNAME' AND TABLE_TYPE != 'VIEW' MySQL 服务器版本:5.1 我对这种行为感到很困惑。 mysql mysql-5.1 1 个回答 Voted Best Answer Bing 2012-11-22T00:52:56+08:002012-11-22T00:52:56+08:00 我猜你在 table_row 列中得到不同的行数?这是 InnoDB 表的预期行为。 “对于 InnoDB 表,行数只是 SQL 优化中使用的粗略估计。(如果 InnoDB 表是分区的,这也是如此。” http://dev.mysql.com/doc/refman/5.1/en/tables-table.html 这里有更多信息:http: //dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html 值得注意的是:“ ANALYZE TABLE 通过对每个索引树进行八次随机潜水并相应地更新索引基数估计来确定索引基数(如 SHOW INDEX 输出的基数列中所示)。因为这些只是估计,重复运行 ANALYZE TABLE可能产生不同的数字。这使得 ANALYZE TABLE 在 InnoDB 表上快速但不是 100% 准确,因为它没有考虑所有行“
我猜你在 table_row 列中得到不同的行数?这是 InnoDB 表的预期行为。
“对于 InnoDB 表,行数只是 SQL 优化中使用的粗略估计。(如果 InnoDB 表是分区的,这也是如此。”
http://dev.mysql.com/doc/refman/5.1/en/tables-table.html
这里有更多信息:http: //dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html
值得注意的是:“ ANALYZE TABLE 通过对每个索引树进行八次随机潜水并相应地更新索引基数估计来确定索引基数(如 SHOW INDEX 输出的基数列中所示)。因为这些只是估计,重复运行 ANALYZE TABLE可能产生不同的数字。这使得 ANALYZE TABLE 在 InnoDB 表上快速但不是 100% 准确,因为它没有考虑所有行“