MYSQL 百万条记录全文检索中文解决方案

MYSQL最适合用于小型运用的开发。遇到了单表上百万记录。用select * from xxx where xxx like '%xxx%';去查询,结果效率低到难以忍受。五十万条记录竟然用了三十秒才出结果!这对于任何运用都是没办法忍受的。对应大数据量查询的时候,很多数据库是支持全文检索的。

首先我的表默认是:innoDB,这种表的类型不支持全文检索,所以要先改变其类型为MyISAM。

 alter table song engine=MyISAM;

然后要在对应的要进行查找的字段上面建立全文检索的索引:

alter table add fulltext index(xxx);

如果要同时对多个字段进行检索可以这样:

alter table add fulltext index(xxx,xxxx);

这样做好以后呢,就可以对表进行全文检索了,速度提升是飞一般的感觉啊!现在的结果是秒出啊。可以这样去检索字段:

select * from xxx where match(xxx) against('nnn') ;

或者多字段:

select * from song where match(xxx,xxx) against('nnn');

 但是,其实这个时候中文是没办法得到结果的!应为MYSQL目前只支持英文字符的全文搜索,这又叫我蛋疼了一下。后来看到一个论文说是按照把中文转化为拼音,就可以用英文检索对中文进行检索了。看了一下拼音的思路以后我就有了一个注意,在表里面为每一个需要检索的字段对应添加一个拼音字段,检索的时候直接对拼音检索就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值