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
「結論、正確な行数を取得して表示しているわけではありません。」
「驚くべきことに、MySQL は数字が苦手です。」
なんと正確な数値を出すべきである件数表示は予測値や近似値である事が判明。なぜそのような設計なのかは不明。
件数が数十件か数百件程度ならこのようなズレは基本起きないのですが、件数が膨大になるとこの現象が起きやすくなるようです。まさに落とし穴でした。
phpMyAdminにおける正確な件数の調べ方
ではどうしたら正しい件数がわかるのかというと、シンプルにCOUNT関数を使えば確認できます。実際にCOUNT関数を組み込んでみると、
この通り、無事29364件という数値が割り出せました。
……毎回COUNT関数混ぜるのはしんどいので何か良い解決方法あれば知りたいです。勉強勉強…
今後も人生豊かにするために勉強頑張りましょう。今回はこれにて