码迷,mamicode.com
首页 > 数据库 > 详细

sql多字段模糊查询优化

时间:2017-03-06 23:44:21      阅读:542      评论:0      收藏:0      [点我收藏+]

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

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

如果写成: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   

原文地址:http://www.cnblogs.com/mwbblogs/p/6512516.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!