关于MySQL数据库中不支持中文检索的一个解决方法---个人愚见
2012-11-22 11:07
295 查看
最近一段时间一直和MySQL数据库打交道,由于数据库的海量数据(数据大小达到5G多),进行模糊查找的时候使用like %xxx%,速度十分慢,影响用户体验,给数据库添加索引的话,又因为在MySQL中使用like %xxx%,索引就会失效,不得已,通过在internet上海找资料,最后总结了一套方法。
首先,几点说明
1
Linux下:在my.cof中[mysqld]后面添加ft_min_word_len=1
AGAINST(‘关键字’ in boolean mode);
至此,我们就完成了全文索引的建立和使用,结果如何呢,我针对我的数据库做了一个对比,我的数据库里面全是视频文件,按照关键字搜索,使用全文检索前后的耗时对比如下表:
通过上面的对比,可以看到,检索速度提高了10-40倍。
首先,几点说明
1、修改数据表的引擎格式为MyISAM
命令行为: alter table表名 type=MyISAM2、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 mysql6、重新设置全文索引
命令行: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 |
相关文章推荐
- json_encode不支持中文的一个解决方法
- poi的autoSizeColumn方法对全角或者说中文支持不好的一个解决办法
- Thin的DateChooser代码学习(关于js的函数参数为一个完整的函数以及“对象不支持此属性或方法”错误的解决)(原创,转载请声明)
- 关于MySQL数据库的中文处理:支持UTF-8的设置方法
- poi的autoSizeColumn方法对全角或者说中文支持不好的一个解决办法
- 关于MySQL数据库的中文处理:支持UTF-8的设置方法
- 关于导入的JS不支持中文的问题解决方法
- 解决MySQL数据库中文模糊检索问题的方法
- 解决MySQL数据库中文模糊检索问题的方法
- poi的autoSizeColumn方法对全角或者说中文支持不好的一个解决办法
- 关于在ubuntu 上vi不支持列模式的解决方法
- Unity--关于中文显示的解决方法
- 关于使用jdbc连接服务器MySQL无法使用中文查询的解决方法
- linux(ubuntu)系统下MySQL数据库中文乱码和MySQL Query Browser中文乱码解决方法
- asp.net传中文值出现乱码的一个解决方法
- 关于实施RUP软件过程控制的方法和标准[只是一个个人总结]
- 关于滚动图片停在浏览器边界上的一点解决办法(个人愚见)。。
- php使用mysql数据库时中文不显示或显示异常解决方法
- ie 无法下载中文名文件 解决方法 【修改IIS5注册表可以支持中文文件名】