普通的工作日,很平常的一天。上午上班,和往常一样写代码,旁边的妹子有点异样,一副一筹莫展的样子,似乎被什么问题困扰了。
本着同事之间应该互相帮助的工作态度,尤其是漂亮女同事,我移动座椅到她旁边,问道:“怎么了,一副烦恼的样子,需要帮助吗?”
“我正想找你呢,你帮我看看这个问题,应该怎么优化?...” 妹子回答道,一副丧气的模样。
原来妹子碰到了这样一个难缠的问题,她负责的一个功能模块有一个关键之搜索功能,根据用户输入的关键字筛选MySQL表中的记录,这是一个模糊匹配的功能,被匹配的字段是text类型,她使用sql中的like功能实现这个需求,类似这样
select * from tb where content like '%关键字%'
![d33b5b08b2cf7f1de53164a3ce16a9a6.png](https://i-blog.csdnimg.cn/blog_migrate/29eefd6d5f60e27f28f6f6440260a943.jpeg)
在开发阶段,这么做没什么问题,所以没有人注意。然而随着项目的上线运营,数据量快速增长,这个功能运行变得很缓慢,有时候甚至要几十秒钟才能出结果,用户体验极差。运营同事将这个问题反馈到妹子这里,她不知道如何解决,所以满脸愁容。因为是一个text类型字段且使用like模糊匹配,根本没法利用索引,只能全表扫描,慢是肯定的&#