扫码关注官方订阅号
mysql 进行昵称搜索模糊查询,如果用户多了 like 查询会很慢,请问如何解决?
欢迎选择我的课程,让我们一起见证您的进步~~
在数据库的此表中的昵称这个字段建立索引
key `nikename`(`nikename`)
全文索引配合sql语句
ALTER TABLE `user` ADD FULLTEXT `fidx_user_nikename` (`nickname`)
然后用以下方式查询
SELECT * FROM \`user\` WHERE MATCH (nickname)AGAINST ('xxx')
如果是like %name%,那在我的认知范围内是没辙了,如果前边没有%可以建索引,或者试试LOCATE函数,不过估计没啥效果。
instr呢?
模糊搜索的话,上分词吧。sphinx coreseek 或者xunsearch(迅搜)
如果你的mysql版本大于5.7, 自带ngram全文索引支持中文分词,我在项目中已用,用法网上已经有教程了
使用搜索引擎,把常用搜索的字段索引起来,然后在结合缓存一起使用
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
在数据库的此表中的昵称这个字段建立索引
key `nikename`(`nikename`)
全文索引配合sql语句
ALTER TABLE `user` ADD FULLTEXT `fidx_user_nikename` (`nickname`)
然后用以下方式查询
如果是like %name%,那在我的认知范围内是没辙了,如果前边没有%可以建索引,或者试试LOCATE函数,不过估计没啥效果。
instr呢?
模糊搜索的话,上分词吧。sphinx coreseek 或者xunsearch(迅搜)
如果你的mysql版本大于5.7, 自带ngram全文索引支持中文分词,我在项目中已用,用法网上已经有教程了
使用搜索引擎,把常用搜索的字段索引起来,然后在结合缓存一起使用