MySQL模糊查询再也用不着 like+% 了!

哇...MySQL的全文索引...真的很强大。
当我在 2 02 2 年做那个项目时......我感觉使用它要快得多。
与之前使用 LIKE '%keyword%' 不同...它非常慢。

全文索引的优点...是速度快。
我尝试...检查一个大约有一百万行的表...不添加索引...卡住了很长一段时间...添加全文索引...结果立即出来了。
这是一个倒排索引……无论如何它都很快。

它还有很多功能...我以前想的是简单的模糊搜索...现在它可以有自然语言...布尔...并且可以扩展。
例如,如果您搜索“计算机”...它可能会自动链接“笔记本电脑”...这太棒了。

创建很简单...您可以在创建时组合一个新表...或者旧表...可以更改...添加全文...没问题。
我去年改造了一个旧系统...并向一些表添加了全文索引...并且效果非常好。

测试时...匹配...效果很好。
例如,如果您测试一篇文章...match(title,content) with('keyword')...自然语言模式...简单明了。
如果你想让它更复杂...使用布尔模式...更多和或或...更多限制。

管理也方便...也可以用sql...创建索引...或者删除索引...来删除。
无论如何,它非常容易使用。

简而言之...全文索引...非常适合文字处理。
特别是对于电子商务...产品描述等...的检查速度比 LIKE 快得多。
2 02 3 年……还能用。

使用带LIKE关键字进行模糊查询【MySQL知识】

让我告诉你我当时遇到的陷阱。
那年我刚刚接手公司的系统,就有一个销售人员来找我,问我如何查数据库里是否有卖“钢笔”的东西,不管是什么品牌。
当我看到它的时候,哦,这太简单了,用LIKE就可以了。

当时我写了一条SQL,不管怎样,只是SELECT FROM items WHERE name LIKE '%pen%'。
弟弟跑过来一看,哦,你可以帮我整理几百条记录啊! “圆珠笔”、“铅笔”、“钢笔”都出来了。
弟弟着急了,说自己不是要找“笔”,而是要“派克笔”或者“英雄笔”,结果却是一堆不相干的。
我当时就很困惑,这是怎么回事?
后来我想了一下。
看我的'%pen%',通配符%在前面。
数据库必须从每条记录的开头开始。
是否需要全表扫描?后来我更改了它并添加了一些条件,例如 SELECT FROM items WHERE name LIKE '%park%' 或 SELECT FROM items WHERE name LIKE '%helt%'。
你看,通配符在后面。
运行时速度更快,结果更准确。

还有一次,一位老人问为什么查东西慢。
当我看到它时,他输入了'%abc%',前面有通配符。
我告诉他,伙计,你不在乎你说什么。
您如何知道从哪里开始搜索数据库?后来我建议他改变一下写法,比如SELECT FROM items WHERE name LIKE 'abc%'或者SELECT FROM items WHERE name LIKE '%abc',这样效率会高很多。

所以,当使用LIKE时,一定要考虑到%。
如果放在前面,效率会大大降低。
当时我就因为这个差点被卖家骂死。
教训是深刻的!