MySQL中的全文检索
2016-05-30 23:46
417 查看
说起数据库,MYSQL最适合用于小型运用的开发。最近想弄一个简单的音乐网站玩一下,数据库是以前在网上爬去的。数据不是特别多,但是也不少,查了一下一共有六十多万条歌曲的记录。既然是做音乐网站的话,首先要有一个搜索的功能,至少要能够搜索你有的歌曲吧。由于以前没有怎么认真弄过sql查询的问题,所以还是用最简单的方法去查询,但是这次遇到了单表上百万记录。我用select * from song where songname like '%key%';去查询,结果效率低到难以忍受。竟然用了三十多秒才出结果!这对于任何运用都是没办法忍受的。后来就想着去做sql查询的优化,google了很久,试过了建立索引,改变表的结构等等都无济于事啊。后来看到一篇专业文章写道,其实对应大数据量查询的时候,很多数据库是支持全文检索的。知道以后我立马开始弄全文检索:
首先我的表默认是:innoDB,这种表的类型不支持全文检索,所以要先改变其类型为MyISAM。
alter table song engine=MyISAM;
然后要在对应的要进行查找的字段上面建立全文检索的索引:
alter table add fulltext index(songname);
如果要同时对多个字段进行检索可以这样:
alter table add fulltext index(songname,singername);
这样做好以后呢,就可以对表进行全文检索了,速度提升是飞一般的感觉啊!现在的结果是秒出啊。可以这样去检索字段:
select * from song where match(singername) against('周杰伦') ;
或者多字段:
select * from song where match(singername,songname) against('风雨');
首先我的表默认是:innoDB,这种表的类型不支持全文检索,所以要先改变其类型为MyISAM。
alter table song engine=MyISAM;
然后要在对应的要进行查找的字段上面建立全文检索的索引:
alter table add fulltext index(songname);
如果要同时对多个字段进行检索可以这样:
alter table add fulltext index(songname,singername);
这样做好以后呢,就可以对表进行全文检索了,速度提升是飞一般的感觉啊!现在的结果是秒出啊。可以这样去检索字段:
select * from song where match(singername) against('周杰伦') ;
或者多字段:
select * from song where match(singername,songname) against('风雨');
相关文章推荐
- MySQL8:连接查询
- mysql BLOB字段转String的方法
- Mysql数据库分库和分表方式(常用)
- 跟我一起学习MySQL技术内幕(第五版):(第三章学习日记12)
- 新装的mysql,直接安装板
- MySQL常用命令行操作大全
- mysql的安装
- MySQL 加锁处理分析
- MySQL 创建数据库的两种方法
- mysql order by rand() 效率优化方法
- mysql分页原理和高效率的mysql分页查询语句
- mysql 的密码重置
- 安装Mysql碰到的一些问题。
- MySQL常用函数整理
- mysql中的null值和空值区别
- MySQL按时间分组
- mysql集群(二)
- MySQL中函数CONCAT及GROUP_CONCAT
- 让sql语句不排序,按照in语句的顺序返回结果mysql:SELECT*FROMEVENTWHER
- Mysql编码问题