MySQLの全文検索と、like検索を比較し、性能にどのくらい差があるのか検証した。
参考URL:Amazon RDS for MySQL と全文検索
検索対象
- 1レコード24000桁の文字データを約9000件入れたテーブルを作成。
- データは青空文庫から取得
環境
- AWSを利用
- EC2:t2.micro
- RDS:db.t2.micro
検証手順
1.テーブルを作成
CREATE TABLE `search` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`search_text` text,
r_datetime datetime,
u_datetime datetime,
PRIMARY KEY (`id`),
FULLTEXT INDEX search_text (search_text) WITH PARSER ngram
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
2.テーブルにデータを入れる。PHPのプログラムで約5分かかった。
3.データ取得時間を計測
SELECT count(*) from search where match(search_text)against('確信にみちみちた' in boolean mode);
処理時間:0.03sec
SELECT count(*) from search where search_text LIKE '%確信にみちみちた%';
処理時間:9.71sec
SELECT count(*) from search where match(search_text)against('電車にのった' in boolean mode);
処理時間:0.02sec
SELECT count(*) from search where search_text LIKE '%電車にのった%';
処理時間:0.51sec
LIKEで検索する場合の数十倍の速さで検索できることが検証できた。