您的位置:首页 > 数据库 > MySQL

关于MySQL数据库中不支持中文检索的一个解决方法---个人愚见

2012-11-22 11:07 295 查看
最近一段时间一直和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倍。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: