MySQL 针对 like 条件的优化

原因:

运维小伙伴:有关left join三张表的语句查询慢,在数据库查询2s,发现是like条件的影响

解决:

like语句查询慢的可以尝试使用函数来查询,具体为instr(字段名,'值')>0
比如查询包含“钟”字的,instr(name, '钟') > 0
使用该函数后,查询仅需0.031s,可以尝试使用这种办法,你会有意想不到的收获

本作品采用《CC 协议》,转载必须注明作者和本文链接
╰ゝSakura
讨论数量: 3

但是这个是要看情况的吧
比如
name AS;
not like 'S%', 不会出现AS
instr(name, 'S', 1, 1) = 0  会出现AS

4年前 评论
╰ゝSakura (楼主) 4年前
kiti (作者) 4年前

你们运维也是666,两个完全不同的功能也能用的好好的。。

4年前 评论
╰ゝSakura (楼主) 4年前

SELECT * FROM sci_article_journal WHERE ( (keywords LIKE '%gastric cancer%') OR (title LIKE '%gastric cancer%') ) ORDER BY publication_time; 这条sql时间:0.155s

SELECT * FROM sci_article_journal WHERE ( (instr (keywords, 'gastric cancer') > 0) OR (instr (title, 'gastric cancer') > 0) ) ORDER BY publication_time; 这条sql时间:0.252s

这明显你这种写法时间过长

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!