InnoDBを使うとき、MyISAMと比較して度々やり玉に挙げられるポイントとして「COUNT()が遅い」というものがある。確かにInnoDBにおいて行数を弾き出すのにはテーブルスキャンが必要なのだが、そもそもMyISAMのCOUNT()が速い(テーブルの行数を保持してる)のが特殊なのであって、InnoDBが遅いわけではないのである。とはいえ、高速なCOUNT()については需要が多く、この問題には多くの人取り組んでおられるようだ。しかしながら、COUNT()のチューニングについては未だ語られていない点があるように見受けられるので、今日はCOUNT()のチューニングについて解説しようと思う。 COUNT(*)、COUNT(col)、COUNT(1)の違い基本的なことではあるが、COUNT(*)とCOUNT(col)では意味が異なるため、異なる結果が返される場合がある。COUNT(*)はフェッ
![漢(オトコ)のコンピュータ道: InnoDBでCOUNT()を扱う際の注意事項あれこれ。](https://cdn-ak-scissors.b.st-hatena.com/image/square/43a7503923f34fab27b0677da801e1b95ad34697/height=288;version=1;width=512/https%3A%2F%2Fblogger.googleusercontent.com%2Fimg%2Fb%2FR29vZ2xl%2FAVvXsEjOcP9-xC0VQ5b6lyNiky2pAvXe3pfq6WzFuLuVLpkXsO_PczPpQJL-ZevtqHNoGhMsHg_zhxrXz8zv8lTtNzxtbGfb6Mk-Zm4-oA6SBZDaOmxdLgS9CmGqIy4kR_c6LIrK6jjJPeRSsPs%2Fs800%2Flogo.png)