ハマログ

株式会社イーツー・インフォの社員ブログ

ITトラブル解決録-phpMyAdminの件数表示の落とし穴-

つ~じ~です。最近はリアルに「きみたちはどう生きるか」みたいな自問自答することが多いです。プライベート人生の目標らしい目標が無い(「美味い飯食ってゲームしてたい」しかない)

少なくともお仕事の方は常に何か勉強と情報収集はし続けていきたいなと思ってます。

さて、そんなこんなで今回は弊社内で起きたIT系トラブルに関する話題です。

phpMyAdminの件数表示の落とし穴

弊社でMySQLのDBを扱う時はよくphpMyAdminを活用します。phpMyAdminはMySQLをPCブラウザ上で管理する為のツールで、これを導入することによってDBの操作(検索、追加、削除、SQL実行など)がPCブラウザ上で行えるようになります。個人商用問わず汎用的に利用されているツールです。

そんなphpMyAdminですが、実はちょっとした落とし穴があったります。以下、弊社で実際に起きたトラブルをベースに解説致します。

phpMyAdmin上で計算したDBレコード数が想定と合わない

とあるSQLを組んで、何万件もあるデータを検索したところ、phpMyAdmin上では以下のような件数となりました。
※以下の画像は情報保護の観点で一部を黒塗りしております。

31310件と出ております。しかし実はこちら、想定と違う数値になっておりました

てっきり私が計算を間違えてしまったのかと思ったのですが、何度計算しても間違いではありません。念のため上記の計算結果のデータを全件CSV出力してみると、

なんとレコード数が29364件である事がわかります、これこそが私が想定していた数値です。

つまり自分の計算は合っていたことになります。ではなぜphpMyAdminの出力件数の方は合っていないのでしょう。

この件についてネットで色々検索をかけたところ、以下のような情報が何件もヒットしました。

「phpMyAdminでテーブルを表示した時に出てくるこのレコード数、実は件数ではなく近似値らしい」

引用:https://miraistart-tech.hatenablog.com/entry/2017/01/16/113841

「結論、正確な行数を取得して表示しているわけではありません。」

引用:https://kikiblog-jp.com/phpmyadmin-browserows/

「驚くべきことに、MySQL は数字が苦手です。」

引用:https://www.frutto.co.jp/8751/

なんと正確な数値を出すべきである件数表示は予測値近似値である事が判明。なぜそのような設計なのかは不明。
件数が数十件か数百件程度ならこのようなズレは基本起きないのですが、件数が膨大になるとこの現象が起きやすくなるようです。まさに落とし穴でした。

phpMyAdminにおける正確な件数の調べ方

ではどうしたら正しい件数がわかるのかというと、シンプルにCOUNT関数を使えば確認できます。実際にCOUNT関数を組み込んでみると、

この通り、無事29364件という数値が割り出せました。

……毎回COUNT関数混ぜるのはしんどいので何か良い解決方法あれば知りたいです。勉強勉強…


今後も人生豊かにするために勉強頑張りましょう。今回はこれにて

mysqlphpMyAdmin

  つーじー   2024年9月13日


関連記事

試験仕様書作成時に注意していること④

前回に引き続き、試験仕様書を作成しているときに注意していることについて執筆してみ…

試験仕様書作成時に注意していること①

先月のブログ投稿で少し触れましたが、今回は試験仕様書を作成しているときに注意して…

Laravelのページネーションでrel=”next”とrel=”prev”を実装する

ページネーションの実装時に、GoogleのGoogle ウェブマスターブログ 複…


← 前の投稿

次の投稿 →