1

IHello、

MySQLデータベースの各テーブルについて、そこにあるレコードの数を数えようとしています。

私のテーブルはすべてInnoDBにあり、このクエリは

SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'myschema';

見積もりが多すぎます(+846レコードがあり、+-400しかないことがわかります)

同様のクエリでより正確な行数をカウントする方法はありますか?クエリの実行にかかる時間は関係ありません。(PSはphpまたは同様の言語を使用していません)

4

3 に答える 3

1

クエリの長​​さが問題にならない場合は、データベース内の各テーブルに対して次のことを行います。

select Count(*) from MyTable
于 2010-10-07T13:26:08.910 に答える
0

この回答に投稿されているように

create table #rowcount (tablename varchar(128), rowcnt int)
exec sp_MSforeachtable 
   'insert into #rowcount select ''?'', count(*) from ?'
select * from #rowcount
    order by tablename
drop table #rowcount
于 2012-10-18T14:34:58.377 に答える
0

システム ビューを使用する場合は、データベース統計が更新されていることを確認する必要があります。そうしないと、information_schema.x などのシステム スキーマ ビューで行数が正しくない可能性があります。

使用

select count(*) yourtable; 

上記の回答で述べたように、正確な数を取得する

Analyze table yourtable; 

統計を更新するには、システムビューでカウントをチェックし、その時点で行数が一致する必要があります。

詳細とデータベース全体に対してこれを行う方法については、次の Web サイトを参照してください。

MySQL リファレンス マニュアル

于 2011-10-27T19:35:42.027 に答える