首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >信息模式没有显示可靠的信息?

信息模式没有显示可靠的信息?
EN

Database Administration用户
提问于 2015-07-16 19:09:50
回答 2查看 2.3K关注 0票数 3

我目前正在从Server迁移到MySQL。当我试图匹配行数时,我会查询information_Schema.tables。我注意到迁移的信息和源信息之间有一些不同。

但是,我做了一个select count(*) from table;,给出了正确的行数

为什么information_Schema.tables.table_rowsselect count(*) from table有区别?

EN

回答 2

Database Administration用户

回答已采纳

发布于 2015-07-16 20:48:32

根本原因是存储引擎。InnoDB不更新information_schema.tables.table_rows列。

我有一些旧的帖子进一步解释了这一点

您可以使用SHOW INDEXES FROM对表进行近似。

如果您希望计算当前数据库中的所有表,而不管存储引擎是什么,只需运行以下命令:

代码语言:javascript
复制
SET group_concat_max_len = 1024*1024*1024;
SELECT GROUP_CONCAT(sqltocount SEPARATOR ' UNION ') sqlcount INTO @sql
FROM (SELECT CONCAT('SELECT ''',table_name,''' tablename,COUNT(1) RowCount
FROM ',table_name) sqltocount FROM (SELECT table_name FROM
information_schema.tables WHERE table_schema=DATABASE()) AA) A;
SELECT @sql\G PREPARE s FROM @sql; EXECUTE s; DEALLOCATE PREPARE s;

试试看!

票数 5
EN

Database Administration用户

发布于 2015-07-17 23:29:06

多亏了罗兰多,他的答案很好。我还创建了一个存储过程来获取该信息,如果它对某人有用,我将将其发布:

DROP PROCEDURE IF EXISTS mysql.getRowCount; DELIMITER // CREATE PROCEDURE mysql.getRowCount(DBNAME VARCHAR(30)) BEGIN DECLARE NO_DATA int default 0; DECLARE TBNAME varchar(30); DECLARE TBS CURSOR FOR select table_name from information_schema.tables where table_schema=DBNAME; DECLARE CONTINUE HANDLER FOR NOT FOUND SET NO_DATA=1; OPEN TBS; CREATE TEMPORARY TABLE IF NOT EXISTS table_count (table_schema varchar(30),table_name varchar(30),table_count varchar(11)) ENGINE=MEMORY; tbs:LOOP FETCH TBS into TBNAME; IF NO_DATA=1 THEN LEAVE tbs; END IF; SET @query=concat('SELECT count(*) into @CONT from ',DBNAME,'.',TBNAME,';'); PREPARE test FROM @query; EXECUTE test; DEALLOCATE PREPARE test; SET @query=concat('INSERT into table_count values ("',DBNAME,'","',TBNAME,'","',@CONT,'");'); PREPARE test FROM @query; EXECUTE test; DEALLOCATE PREPARE test; END LOOP tbs; CLOSE TBS; SELECT * from table_count; DROP TABLE table_count; END// DELIMITER ; call mysql.getRowCount('mysql');

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/107247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档