MySQL InnoDB FTSで簡単に全文検索の性能測ってみた
前回MySQL InnoDB FTSで機能的に全文検索できるところまでやったけど、大量にデータ投入して簡単に性能測ってみた。
マシンはMacBook Pro (Retina, 13-inch, Late 2013/CPU: 2.4 GHz Intel Core i5/メモリ:8 GB 1600 MHz DDR3)上で動くVirtualBoxの仮想マシン(CPU:1コア/メモリ4GB)です。
投入したデータは87万件ほど。
mysql> select count(*) from commits; +----------+ | count(*) | +----------+ | 878843 | +----------+ 1 row in set (1.05 sec)
普通のLIKE検索だと3.24秒ぐらい。
mysql> select count(*) from commits where message like '%fix%'; +----------+ | count(*) | +----------+ | 232147 | +----------+ 1 row in set (3.24 sec)
全文検索だと0.20秒ぐらい。
mysql> select count(*) from commits where match(message) against ('+fix' in boolean mode); +----------+ | count(*) | +----------+ | 159633 | +----------+ 1 row in set (0.20 sec) -----------
うん。だいぶ実用的な速度になったんじゃないでしょうか。ヒット件数が違うので純粋に同じ検索方法ではないのだけど、やりたいことは正確性あんまりこだわらない用途だし、検索結果とか初めの100件ぐらいしかみんな見ないし大丈夫。