MySQL like 和 regexp 比较

嘿嘿,说一下我遇到的坑吧。
当时我们公司有一个老项目,数据库表非常大,有几万条记录。
有一次老板很着急,想找一组带有特定后缀的用户,比如@1 6 3 .com。
当时我只是简单的使用“%@1 6 3 .com”,运行一下,0.2 秒就得到了结果。
我旁边的朋友尝试了 regexp,速度慢了一倍,0.3 5 秒。
我们后来测试了一下,发现like确实比regexp快很多,特别是在这个简单的前缀后缀匹配上。

还有一次,在一次活动中,必须检查用户输入的地址,以确保没有混淆的字符,并且地址必须是中文。
这很复杂。
Like 根本不够,所以你可以使用正则表达式。
尽管查询有点慢,但最终还是匹配成功了。
所以你看,like和regexp应该根据情况来使用。

like 或 regexp 的选择取决于您的具体需求。
如果你能只检查前缀、后缀等,肯定会更快,也省事。
如果您需要匹配一些复杂的内容,例如正则表达式,则需要使用 regexp,它速度较慢但功能更强大。
我记得当时,当我们优化查询时,我们对应该使用的所有内容都使用 like,对于应该使用的所有内容都使用 regexp。
最终,整体查询性能得到了提高。

总之,like和regexp之间没有绝对的区别,哪个更好哪个更差。
这取决于具体情况。
如果您遇到任何问题,可以告诉我,我会帮助您。

分析为什么mysql中like模糊查询效率低

说到这种问题,我以前也遇到过很多这样的问题。
有一次,我有一个大概有四百万条数据的项目,查询速度慢得像蜗牛,真是让人头疼。

起初我们没有使用索引。
查询花费的时间与普通查询大致相同,但发现查询花费的时间稍长。
这是正常的,因为它需要额外的处理,就像我当时不明白为什么询问这么慢一样。

后来,我们添加了索引,普通查询立即变得更快,几乎几秒钟。
这个变化太明显了。
但尽管类似问题的速度提高了一些,但仍然超过一秒。
我当时就解释分析了一下,虽然普通查询使用索引,不出所料,我发现还是需要像查询一样扫描全表。

老实说,这让我很惊讶。
有时这样的查询根本不使用索引,自然会导致全表扫描,效率低下。

但是,这并不意味着问题根本不能使用。
有时,您可以输入查询条件“dd_”或由于写成“like 'dd%'”,所以可以使用索引,查询速度会比较快。
另一方面,速度仍然比普通查询慢很多。

因此,当Dataw量变大时,应该尽量避免出现这样的问题。
如果你确实想做谜题搜索,我通常建议使用像 Solr 这样的搜索引擎。
效果比查询好很多,速度也稍快一些。

这可能有点极端,但说实话,无论数据库设计得多么好,如果问题写得不合逻辑,效率也不会提高。
作为技术专家,我们必须不断学习和优化,让系统运行得更快。

MySQL判断某个字段是否包含某个字符串的方法

locate 函数返回字符串的位置。
如果大于0,则找到。

我上周刚刚使用locate 处理了一个URL 字段。
与“http://”类似,它返回一个位置号。

like - 模糊匹配。
要使用“John”查询姓名字段,请使用 LIKE“%John%”。

find_in_set 检查某个值是否位于逗号分隔的字符串中。
例如,一项爱好涉及“阅读”。

INSTR 和locate 的功能类似,但INSTR 速度更快。
要检查内容字段是否包含“MySQL”,请使用 INSTR>0。

摘要:正确使用 locale 或 INSTR。
使用 LIKE 进行模糊匹配。
索引搜索使用find_in_set。

您个人使用哪一个?