‡A Case Of Identity‡

頑張ります!

MySQLとか

ICHIRO2008-08-12

今日の昼食は健康的でした。
てことで、MySQLiBatisでやってるわけですが、やけに遅い。

SELECT SQL_CALC_FOUND_ROWS * FROM テーブル LIMIT 0,10;

LIMITついてても、この後に

SELECT FOUND_ROWS();

で、全件数を取得できるってことでやってたんですが、コレがネックになってたみたい。
INDEXの張り方かなと思ったけど、COUNT(*)に変えたら、インデックス張ってないもののWHEREやORDERでも、まぁそれなりの速度だったので、そうともいえないみたい。
InnoDBMyISAMの違い?

結果セットを送る必要の無い COUNT() との比較については、リファレンスマニュアルには書かれていない。しかし、オープンソース情報データベース OSS iPedia での検証によれば、約 70% のパフォーマンス向上が確認できたとの事(InnoDB によるものなので MyISAM は未検証)。

http://private.ceek.jp/archives/002864.html

MyISAMだからかなぁ・・・。