Mysql 使用全文索引

Mysql数据量达到百万级别以后,查询性能很低,尤其是在模糊查询方面,采用like %xxx%形式,速度难以接受,200万数据,查询需要大约10秒,当然根据like的内容,如果采用limit形式,不使用order by,关键词出现频率高的查询效率会好一些,但是较为低的查询效率很是问题。


MySQL5.6之前 fulltext索引只支持MyISAM的表类型,5.6开始在InnoDB类型中开始支持。


建立全文索引需要注意,默认索引词最小单位是4,一般都需要稍微修改一下,show variables like 'ft_min_word_len'; 查看默认

linux 修改/etc/my.cnf中配置,将ft_min_word_len=1加到mysqld下保存,并重启服务器。

表上建立全文索引,多个字段逗号隔开,全文索引查询时也要多个字段

alter table xxx add fulltext(nickname);

SELECT
			c.id,
			c.nickname
			 
		FROM
			xxxx c
		where  match(c.nickname) against ('框渣' in boolean mode) 
		limit 10;
如果查询不到数据执行:

repair table xxxx;

索引重新建立一下。

再次执行应该就可以查询到数据了,查询采用match(col1,col2..) against ('关键词1,xxxx,xxx,'),该形式是返回浮点类型代表匹配度,使用in boolean mode时布尔类型,只返回0/1,此外还有一些通配符,需要的可以百度看一下。

另外,这个对中文的支持不好,据说新版的自带了中文分词插件,不带分词插件情况下,只能全词才能匹配到,模糊的匹配不到。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值