当前位置:Gxlcms > 数据库问题 > sql多字段模糊查询优化

sql多字段模糊查询优化

时间:2021-07-01 10:21:17 帮助过:12人阅读

在实际开发中经常会遇到同一个关键字需要对多个字段模糊查询,比如一个用户表在输入关键字查询时可能要对用户名、用户姓名、联系电话等字段进行模糊查询

如果写成:where userName like ‘%关键字%‘ or fullName like ‘%关键字%‘ or mobile like ‘%关键字%‘这种方式会导致性能非常低,几十万条数据可能就要很长世间才查询出来,为了解决这个问题,可以把这几个字段拼接起来然后再对拼接的字符串进行字符串搜索,这样性能将得到非常高的提升;

在sql server中可以这样写:where charindex(‘关键字‘,ISNULL(userName,‘‘)+ISNULL(fullName,‘‘)+ISNULL(mobile,‘‘))>0

在orace中可以这样写:where instr(nvl(userName, ‘‘)||nvl(fullName,‘‘)||nvl(mobile,‘‘),‘关键字‘)>0

 

以上是针对关键字相同的时所编写的,如果关键字不同也可以这样写

在sql server中可以这样写:where charindex(‘关键字1‘,userName)>0 or charindex(‘关键字2‘,fullName)>0 or charindex(‘关键字3‘,mobile)>0

在orace中可以这样写:where instr(userName,‘关键字1‘)>0 or instr(fullName,‘关键字2‘)>0 or instr(mobile,‘关键字3‘)>0

注意在拼接字符串的时候一定要做null判断否则只要有一个字段为null拼接的结果都将为null

sql多字段模糊查询优化

标签:where   nbsp   查询   sql   模糊查询   需要   输入   用户表   mobile   

人气教程排行