InnoDBが実際に読んだレコード数を取得する

MySQLサーバが返すレコード数でなく、InnoDBが実際に読んだレコード数知りたいなーと思ってたら、普通にステータス変数の Innodb_rows_read で取れました。

SHOW SESSION STATUS LIKE 'Innodb_rows_read';

Innodb_rows_read は今までの累積値なので、クエリ実行前と後の差分を見るといいでしょう。 (FLUSH STATUS;を実行してもInnodb_%関係のステータス変数はリセットされないみたいです。サーバ再起動しかリセット方法はないのでしょうか?)

EXPLAIN結果のrows列が想定値よりずれてる時に見てみるといいと思います。