首页天道酬勤模糊查询like优化,sql慢查询优化

模糊查询like优化,sql慢查询优化

张世龙 05-05 00:57 66次浏览

【MySQL】MySQL混淆查询like快速优化

使用msyql进行模糊查询时,自然会使用like语句。 通常,在数据量小时很难知道查询的效率,但在数据量达到百万级、千万级时查询的效率更容易理解。 此时,查询的效率很重要!

通常,like模糊查询的编写方法是(field已索引) )。

选择` column ` from ` table ` where ` field ` like ' % keyword % ';

在explain中说明上述语句时,SQL语句不使用索引,而是所有表搜索,因此如果数据量大,最后的效率可能是这样的

比较以下写法:

选择` column ` from ` table ` where ` field ` like ' keyword % ';

在explain中说明这种书写方式时,SQL语句使用了索引,大大提高了搜索效率。

但是,在我们进行模糊查询时,有时并不是所有想查询的关键字都在前面,所以如果不是特殊要求,“keywork%”并不适合所有的模糊查询

此时,我们用其他方法

1.locate(substr )、str和pos )方法

选择位置(xbar )、foobar );

返回# # # 0选择位置(bar )、foobarbar;

返回# # # 4选择位置(bar )、foobarbar)

返回###

注:返回substr在str中首次出现的位置。 如果str中不存在substr,则返回值为0。 如果pos存在,则返回substr在str的第一个pos位置之后的第一个位置;如果substr不存在,则返回值为0。

select ` column ` from ` table ` wherelocate ` ' keyword ',` field ` ) 0

备注: keyword是要搜索的内容,field是匹配字段,用于搜索keyword所在的所有数据

2 .位置(substr )在(field ) )方法

位置可以视为locate的别名,功能与locate相同

选择` column ` from ` table ` where position (' keyword ' in ` filed ` )

3.instr(str )、substr )方法

select ` column ` from ` table ` where instr ` field `,' keyword ' ) 0

除了上述方法以外,还有函数FIND_IN_SET

find_in_set(str1,str2) :

返回str2的str1所在的位置索引。 其中,str2需要用“、”进行分割。

select * from ` person ` where find _ in _ set (apply,` name );

—https://www.cn blogs.com/mqxs/p/9703000.html

mysql数据库模糊查询语句,模糊查询like优化