Like关键字,从技术上来说,是一个非常友善的通配符。利用这个通配符,我们可以实现很多模糊查询。如现在在一个人事档案系统中,用户想知道身份证号码以“339005”开头的人事信息,此时,就可以利用Like语句实现。我们可以利用下面的条件语句,实现我们的需求,“where 身份证号码 like ‘339005%’”。通过这个条件语句,可以查到所有身份证以339005开头的号码。   但是,当用户在一张大表中采用这个LIKE语句的话,就会发现这个查询语句的运行效率非常的慢。这是什么原因造成的呢 其实,不管是Like 关键字,若采用MATCHES关键字的话,若在大量数据中查找符合条件的记录,则其运行效率也比较低。这主要是其技术特性所造成的。   

Like与Matches两个关键字,其支持通配符匹配。在有些专业书籍上把这个叫做“正规表达式”。不过由于在利用这些关键字查询的时候, 数据库系统不是通过索引来查询,而是采用顺序扫描的方式来查询。显然,真是这种技术特性,造成了Like与Mateches两个关键字查询效率的低下。特别是在复杂查询或者大表查询中,用户可以明显感觉到速度比较慢。   

索引是数据库中的一个重要的数据结构。索引如果利用的合理的话,可以大幅度的提升数据库的查询性能。一般情况下,我们在数据库设计的时候,要充分的利用索引,来提高数据库的运行效率。如对于一些经常需要用到的查询功能,我们需要为没有指定外键的列建立索引;如有查询大表数据,而且又需根据好几个字段的值对其进行排序,也需要在这些列上建立复合索引。特别是在一些应用系统上,往往可以按以下字段的名称,就会对这个字段进行排序。遇到这种情况的话,更加需要在这些频繁进行排序的列上建立索引,以提高重新排序的效率。可见,若在查询的时候,若不能利用索引提高查询效率的话,则就好像跑车失去四轮驱动,速度会大受影响。   

所以,在数据库系统设计中,要尽量避免采用Like或者Matche关键字。有时候,我们可以利用其他运算符号来代替。如我们可以利用〉(大于)或者<(小于)符号来达到类似的需求。若真的要采用这两个关键字的话,则就需要做好查询优化方面的工作。如不要在基础表中直接利用这个两个关键字,而是通过报表视图、或者临时表等来查询,以减少其不良影响

转载于:https://my.oschina.net/u/3176628/blog/845095

Oracle中慎用Like等通配符相关推荐

  1. oracle 通配符0或1,关于ORACLE中的通配符,以下说法错误的是( )。(1.0分)

    关于ORACLE中的通配符,以下说法错误的是( ).(1.0分) 更多相关问题 单选(1分) TVTK创建对象时,使用的关键字参数都是什么类型的: 单选(1分) 以下不属于车站工作数量指标的是 下列武 ...

  2. oracle中变量前加冒号_Oracle通配符,运算符的使用, 冒号问题

    >=.<=:大于等于,小于等于 =:等于 !=,<>,^=:不等于 包含:in.not in exists.not exists 范围:between...and.not be ...

  3. oracle中的通配符

    oracle中的通配符 %   零或者多个字符 _    单一任何字符(下划线) \     特殊字符 转载于:https://www.cnblogs.com/alisonGavin/p/705830 ...

  4. oracle execute存过,存储过程中慎用 execute immediate

    存储过程中慎用 execute immediate , execute immediate 执行DDL语句一定要小心,否则会造成数据一至性问题. [@more@] 1, create table t1 ...

  5. oracle元字符,oracle中正则表达式的基本元字符

    前面我们介绍了oracle中正则表达式的基本元字符和常用的两个函数regexp_like和 regexp_instr.这里我们再继续介绍剩下的两个正则表达式函数regexp_replace和regex ...

  6. oracle中生成大批量数据的方法-下

    方法五:使用PLSQL的数据生成器 首先测试环境建立:dept表 CREATE TABLE dept(deptno NUMBER(6),dname VARCHAR2(20),loc VARCHAR2( ...

  7. oracle正则判断身份证号,Oracle中查询使用正则表达式函数REGEXP

    Oracle中的Like操作符使用"_"和"%"作为通配符,使用就像这样: Java代码 SELECT name FROM test_like WHERE na ...

  8. ORACLE中高效SQL的写法

    目录 1.  书写格式规范  1-1.大小文字及空格的统一  1-2.日期格式明确化  1-3.Bind变量的使用  1-4.表别名的使用  1-5.检索时尽量避免检索不需要的列  1-6.ORDER ...

  9. oracle中正则表达式规则,Oracle中的正则表达式(及函数)详解

    1.概述 相信大家对正则表达式都不陌生,从linux下的命令到Java等编程语言,正则表达式无处不在,虽然我们实际使用的时候也并不一定太多,但是当我们要处理字符串时,它确实是一个强大的工具. 上一篇文 ...

最新文章

  1. java进入编程界面_java – 编程到界面是什么意思?
  2. mysql更新数据 update格式和alter对比
  3. hive清空外表数据
  4. 万级 K8S 集群背后,etcd 如何保持稳定性?
  5. [ BZOJ 2160 ] 拉拉队排练
  6. Spring Data JPA 从入门到精通~实际工作的应用场景
  7. pytorch中的expand()和expand_as()函数--扩展张量中某维数据的尺寸
  8. 聊天机器人-AIML人工智能标记语言
  9. wpf中显示HTML
  10. 两年经验拿到蚂蚁/头条 Offer(面经分享)
  11. Java连接db2数据库(常用数据库连接五)
  12. JZOJ1205. 帮助Bubu(2017.8B组)
  13. VS2010开发的winform程序在XP系统打不开的原因(与ico图标像素有关)
  14. 域格 ASR CAT4 系列模块FOTA 升级(HTTP 方式)
  15. 一名合格的Java后端工程师或架构师必须要掌握 Spring Framework、Spring Boot、Spring Cloud
  16. 黄鱼车今后会少 下沙公交小巴向出租车转型
  17. CSS单位之vw、vh、vmin、vmax、%
  18. Arduino自制打地鼠游戏机详细教程
  19. 中科院最年轻院士入职浙大!他一篇论文未发博士毕业!
  20. linux命令大全——文件编辑相关指令

热门文章

  1. 西联汇款和Bharti Airtel向印度数百万银行账户和非洲移动钱包提供实时全球支付服务
  2. Google Adsense 西联汇款热点问题的说明
  3. 致敬不凡·最美的星火:国产飞腾CPU研发力量
  4. CAD注记层转到SDE Annotation Features(ArcEngine,C++实现)(转载)
  5. 三升序列(蓝桥杯真题)——python
  6. Myeclipse中java文件注释格式设置
  7. 无线蓝牙耳机哪个品牌音质好?性价比高音质好的蓝牙耳机排行榜
  8. Selector空轮询
  9. 视频教程-PR教程-Premiere 2020影视剪辑实战精讲-其他
  10. angular的ngStrictDi