在数据库量比较大的时候通常有一些查询,例如查询文本类型的数据,存储量大,用like进行模糊查询效率实在太低

select * from stdcontent where  content like '%武器%'

查询结果

总共在568148条数据中筛选出来的结果,所以耗时比较大,反应数据返回去导致使用场景中在这反回的期间,用户在等,给用户展现出来的就是卡死状态,用户还想去点击其他的,导致程序崩溃。

解决方案:用contains关键字。

用法:select * from stdcontent where contains([content],'"*武器*"')

查询结果

两条查询结果在耗时速度上相差很多,在数据方面会有所相差,具体下面

全文索引——CONTAINS 语法 
我们通常在 WHERE 子句中使用 CONTAINS ,就象这样:SELECT * FROM table_name WHERE CONTAINS(fullText_column,'search contents')。  select CompanyName from T_Enterprise where CompanyName like '%CCC%' 查询结果:
CompanyName
-------------------------------- 可以查到
CCCCCCCCC select CompanyName from T_Enterprise where  Contains(CompanyName,'CCC')
查询结果:
CompanyName
--------------------------------查不到数据 备注:该表已经进行全文索引! 再换另外一个关键字来查询下、 select COUNT(*) from T_Enterprise where CompanyName like '%公司%'       select COUNT(*) from T_Enterprise where  Contains(CompanyName,'公司') 结果是使用Contains查询的记录数比Like少!
我们通过例子来学习,假设有表 students,其中的 address 是全文本检索的列。 
1. 查询住址在北京的学生 
SELECT student_id,student_name 
FROM students 
WHERE CONTAINS( address, 'beijing' ) 
remark: beijing是一个单词,要用单引号括起来。  2. 查询住址在河北省的学生 
SELECT student_id,student_name 
FROM students 
WHERE CONTAINS( address, '"HEIBEI province"' ) 
remark: HEBEI province是一个词组,在单引号里还要用双引号括起来。  3. 查询住址在河北省或北京的学生 
SELECT student_id,student_name 
FROM students 
WHERE CONTAINS( address, '"HEIBEI province" OR beijing' ) 
remark: 可以指定逻辑操作符(包括 AND ,AND NOT,OR )。  4. 查询有 '南京路' 字样的地址 
SELECT student_id,student_name 
FROM students 
WHERE CONTAINS( address, 'nanjing NEAR road' ) 
remark: 上面的查询将返回包含 'nanjing road','nanjing east road','nanjing west road' 等字样的地址。 
A NEAR B,就表示条件: A 靠近 B。  5. 查询以 '湖' 开头的地址 
SELECT student_id,student_name 
FROM students 
WHERE CONTAINS( address, '"hu*"' ) 
remark: 上面的查询将返回包含 'hubei','hunan' 等字样的地址。 
记住是 *,不是 %。  6. 类似加权的查询 
SELECT student_id,student_name 
FROM students 
WHERE CONTAINS( address, 'ISABOUT (city weight (.8), county wright (.4))' ) 
remark: ISABOUT 是这种查询的关键字,weight 指定了一个介于 0~1之间的数,类似系数(我的理解)。表示不同条件有不同的侧重。  7. 单词的多态查询 
SELECT student_id,student_name 
FROM students 
WHERE CONTAINS( address, 'FORMSOF (INFLECTIONAL,street)' ) 
remark: 查询将返回包含 'street','streets'等字样的地址。 
对于动词将返回它的不同的时态,如:dry,将返回 dry,dried,drying 等等。

sql模糊查询效率的更多相关文章

  1. SQL 提高查询效率

    1.关于SQL查询效率,100w数据,查询只要1秒,与您分享: 机器情况p4: 2.4内存: 1 Gos: windows 2003数据库: ms sql server 2000目的: 查询性能测试, ...

  2. 8.mybatis动态SQL模糊查询 (多参数查询,使用parameterType)

    多参数查询,使用parameterType.实例: 用户User[id, name, age] 1.mysql建表并插入数据 2.Java实体类 public class User { public ...

  3. sql模糊查询

    SQL 模糊查询 在进行数据库查询时,有完整查询和模糊查询之分. 一般模糊查询语句如下: SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式: ...

  4. SQL模糊查询与删除多条语句复习

    string IDlist="1,2,3"; 批量删除数据 StringBuilder strsql=new StringBuilder(); strSql.Append(&quo ...

  5. SQL 模糊查询

    在进行数据库查询时,有完整查询和模糊查询之分.一般模糊查询语句如下: SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式:1,%:表示任意0个 ...

  6. SQL 模糊查询(like)

    在进行数据库查询时,有完整查询和模糊查询之分. SQL模糊查询,使用like比较字,加上SQL里的通配符,请参考以下: 1.LIKE'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadde ...

  7. [转]SQL 模糊查询

      在进行数据库查询时,有完整查询和模糊查询之分. 一般模糊查询语句如下: SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式: 1,% :表 ...

  8. Jmeter中JDBC Request和BeanShell PostProcessor的结合使用(SQL模糊查询)

    [前言] 今天记录一下Jmeter中JDBC Request和BeanShell PostProcessor的结合使用的方法(SQL模糊查询) [步骤] 1.下载对应数据库的驱动包到jmeter安装目 ...

  9. SQL提高查询效率的几点建议

    1.如果要用子查询,那就用EXISTS替代IN.用NOT EXISTS替代NOT IN.因为EXISTS引入的子查询只是测试是否存在符合子查询中指定条件的行,效率较高.无论在哪种情况下,NOT IN都 ...

随机推荐

  1. EFI、UEFI、MBR、GPT的区别

    UEFI.GPT.MBR是什么?这些专业术语不难理解,UEFI属于主板类名词,其作用类似于BIOS.GPT.MBR则属于硬盘类名词,它们的作用类似一艘航母的骨架,有了这个骨架,我们才可以进行细致到诸如 ...

  2. 【mongodb系统学习之四】查看mongodb进程

    四.查看mongodb进程(可以配合启动和关闭使用): 1).方法一:直接查看mongodb进程是否已经存在(用上面的方式启动后,需要另开一个窗口操作):ps –ef|grep mongodb, 如图 ...

  3. 使用图片作为a标签的点击按钮时,当触发touchstart的时候,往往会有一个灰色的背景,想要去掉的话可以用下面这种方式

    a,a:hover,a:active,a:visited,a:link,a:focus{    -webkit-tap-highlight-color:rgba(0,0,0,0);    -webki ...

  4. VMware下载安装及CentOS7下载安装

    我是在Windows10系统下,下载的VMware Workstation 12 1.下载虚拟机软件 安装包位置(里面有激活码):https://pan.baidu.com/s/1i5hn5lj 2. ...

  5. 用VSCode开发一个asp.net core 2.0+angular 5项目(4): Angular5全局错误处理

    第一部分: http://www.cnblogs.com/cgzl/p/8478993.html 第二部分: http://www.cnblogs.com/cgzl/p/8481825.html 第三 ...

  6. 【BZOJ1076】奖励关(动态规划,数学期望)

    [BZOJ1076]奖励关(动态规划,数学期望) 题面 懒,粘地址 题解 我也是看了题解才会做 看着数据范围,很容易想到状压 然后,设\(f[i][j]\)表示当前第\(i\)轮,状态为\(j\)的期 ...

  7. mailgun 发邮件示例代码Python版

    1 首先到mailgun官网注册账号,并激活账号 点击domains,进入默认的域名,最底下那个sandbox域名就是默认的测试域名 如果自己有域名,也可以添加自己的域名测试,具体参考:ssr pan ...

  8. spring中的aop的xml配置方式简单实例

    aop,即面向切面编程,面向切面编程的目标就是分离关注点,比如:一个骑士只需要关注守护安全,或者远征,而骑士辉煌一生的事迹由谁来记录和歌颂呢,当然不会是自己了,这个完全可以由诗人去歌颂,比如当骑士出征 ...

  9. Android端 高德地图点击得到经纬度

    <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=&q ...

  10. 详解QT5.10.0搭载OpenCV3.4.0环境配置步骤说明

    一.准备工作: 1下载Qt5.10.0 和 Qt Creator 4.5.0软件(http://download.qt.io/official_releases/qt/) 2.下载opencv3.40 ...