關於MySQL資料庫中不支援中文檢索的一個解決方法---個人愚見
最近一段時間一直和MySQL資料庫打交道,由於資料庫的海量資料(資料大小達到5G多),進行模糊查詢的時候使用like %xxx%,速度十分慢,影響使用者體驗,給資料庫新增索引的話,又因為在MySQL中使用like %xxx%,索引就會失效,不得已,通過在internet上海找資料,最後總結了一套方法。
首先,幾點說明
1、修改資料表的引擎格式為MyISAM
命令列為: alter table表名 type=MyISAM
2、mysql的全文索引只能用在char、varchar、text欄位上
3、對於大資料量,應該先載入資料,然後再新增全文索引
命令列為:altertable 表名add fulltext index
4、配置檔案
Windos下:在my.ini中[mysqld]後面新增ft_min_word_len= 1
Linux下:在my.cof中[mysqld]後面新增ft_min_word_len=1
5、重新啟動mysql伺服器
停止命令列:net stop mysql,啟動命令列:net start mysql
6、重新設定全文索引
命令列:REPAIR TABLE表名 QUICK;
7、使用方法
命令列: select * from表名 where MATCH(欄位名)
AGAINST(‘關鍵字’ in boolean mode);
至此,我們就完成了全文索引的建立和使用,結果如何呢,我針對我的資料庫做了一個對比,我的資料庫裡面全是視訊檔案,按照關鍵字搜尋,使用全文檢索前後的耗時對比如下表:
關鍵字 |
全文檢索使用前耗時(單位:秒) |
全文檢索使用後耗時(單位:秒) |
康佳 |
34 |
0.4 |
哈工大 |
38 |
0.7 |
倚天屠龍記 |
40 |
4.4 |
喜羊羊 |
30 |
0.2 |
趙薇 |
41 |
4.3 |
趙本山 |
11 |
3.7 |
鄉村愛情故事 |
23 |
0.7 |
北京愛情故事 |
37 |
1.8 |
大秦帝國 |
37 |
0.8 |
讓子彈飛 |
36 |
2.8 |
龍門飛甲 |
39 |
2.4 |
暮光之城 |
45 |
1.6 |
功夫熊貓 |
40 |
2.3 |
英雄 |
12 |
4.7 |
金剛 |
17 |
0.8 |
濟公 |
41 |
1.1 |
白蛇傳說 |
41 |
0.8 |
甄嬛傳 |
41 |
1.6 |
北京青年 |
41 |
1.4 |
愛情公寓 |
47 |
2.2 |
笑傲江湖 |
39 |
4.2 |
步步驚心 |
41 |
5.2 |
武林外傳 |
41 |
1.8 |
通過上面的對比,可以看到,檢索速度提高了10-40倍。