大黑豆(Q4):请教一下有关模糊查询优化,有没有什么比较成熟的好的策略?
玄惭(A4):模糊查询分为半模糊和全模糊,也就是:  
select * from book where name like ‘xxx%’;(半模糊)  
select * from book where name like ‘%xxx%’;(全模糊)  
半模糊可以可以使用到索引,全模糊在上面场景是不能使用到索引的,但可以进行一些改进,比如:  
select book.*  from book , (select book_id from book where book_name like ‘%算法%’)  book_search_id   
where book.book_id=book_search_id.book_id;   
注意这里book_id是主键,同时在book_name上创建了索引
上面的sql语句可以利用全索引扫描来完成优化,但是性能不会太好;特别在数据量大,请求频繁的业务场景下不要在数据库进行模糊查询;  
非得使用数据库的话 ,建议不要在生产库进行查询,可以在只读节点进行查询,避免查询造成主业务数据库的资源消耗完,导致故障.  
可以使用一些开源的搜索引擎技术,比如sphinx.  

发表评论

电子邮件地址不会被公开。 必填项已用*标注