在数据库量比较大的时候通常有一些查询,例如查询文本类型的数据,存储量大,用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. eclipse报错

    1.eclipse报错具体如下 Error occurred during the build. Errors running builder 'JavaScript Validator' on pr ...

  2. Django学习-15-Cookie

    Cookie             1.如果没有cookie,那么所有的网站都不能登录             2.客户端浏览器上的文件,keyvalues形式存储的,类似字典           ...

  3. poj3268(置换矩阵思想)

    题意:一群牛分别从1~n号农场赶往x号农场参加聚会,农场与农场之间的路时单向的,在n个农场之间有m条路,给出 a ,b , t表示从a号农场到b号农场需要t时间. 每头牛都会选择最短的路,问来回路上( ...

  4. mybatis快速入门(八)-spring-mybatis动态代理整合

    将上一节的代码改造下就好了,不过这一章会加一个basedaomapper.废话不多说直接上代码了. 创建一个BaseDaoMapper.java package cn.my.sm.mapper; /* ...

  5. 【NOIP2012】疫情控制(二分,倍增,贪心)

    洛谷上的题目链接,题目不在赘述 题解 既然要时间最短,首先考虑二分. 因此,考虑二分时间,问题转换为如何检查能否到达. 如果一支军队一直向上走,能够到达根节点,那么他可以通过根节点到达其他的节点,因此 ...

  6. [BZOJ2684][CEOI2004]锯木厂选址

    BZOJ权限题! Description 从山顶上到山底下沿着一条直线种植了n棵老树.当地的政府决定把他们砍下来.为了不浪费任何一棵木材,树被砍倒后要运送到锯木厂. 木材只能按照一个方向运输:朝山下运 ...

  7. 算法精解:DAG有向无环图

    DAG是公认的下一代区块链的标志.本文从算法基础去研究分析DAG算法,以及它是如何运用到区块链中,解决了当前区块链的哪些问题. 关键字:DAG,有向无环图,算法,背包,深度优先搜索,栈,BlockCh ...

  8. tp5.带标签的缓存 创建和清除 测试

    原文:http://www.upwqy.com/details/24.html 测试设置了标签的缓存的获取方式 和清除标签缓存. 有时候我们可能会对同类型的一些数据做统一缓存.和统一清除更新处理. 那 ...

  9. 关系型数据库工作原理-查询优化器之索引(翻译自Coding-Geek文章)

    本文翻译自Coding-Geek文章:< How does a relational database work>.原文链接:http://coding-geek.com/how-data ...

  10. 邮箱&&密码验证-原理

    原理版: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...