MySQL の information_schema を使用して大きなテーブルの行数を調べる
こんにちは、 @kz_morita です。
今回は、MySQL で行数の大きいテーブルの行数を知りたい場合の Tips をまとめます。
count は巨大なテーブルには厳しい 通常、MySQL でテーブルの行数をいらべるには、count を使えばよいです。
SELECtcount(*)FROMtable_nameただし、テーブルの行数が多い場合には上記のクエリは基本的には返ってきません。
業務で 1億レコード近いデータを扱うのですが、そういったテーブルでは count を用いた合計件数の取得は厳しいです。
information_schema を見る そこで、information_schema テーブルを見る方法があります。
具体的には以下のようなクエリでテーブルの行数を調べることができます。
SELECTTABLE_SCHEMA,TABLE_NAME,TABLE_ROWSFROMinformation_schema.TABLESWHERETABLE_SCHEMA='target_db';information_schema の中の TABLES テーブルに、各種テーブルの情報が入っています。
その中の、TABLE_ROWS テーブルに概算の行数が入っているのでそれが参考になります。
ただし、公式サイトに以下のような記載があるとおり、
・TABLE_ROWS
The number of rows. Some storage engines, such as MyISAM, store the exact count. For other storage engines, such as InnoDB, this value is an approximation, and may vary from the actual value by as much as 40% to 50%.