`
tzraeq
  • 浏览: 82988 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

[转]oracle用instr代替like 效率比拼

阅读更多
t表中将近有1100万数据,很多时候,我们要进行字符串匹配,在SQL语句中,我们通常使用like来达到我们搜索的目标。但经过实际测试发现,like的效率与instr函数差别相当大。下面是一些测试结果:

SQL> set timing on
SQL> select count(*) from t where instr(title,’手册’)>0;

COUNT(*)
———-
65881

Elapsed: 00:00:11.04
SQL> select count(*) from t where title like ‘%手册%’;

COUNT(*)
———-
65881

Elapsed: 00:00:31.47
SQL> select count(*) from t where instr(title,’手册’)=0;

COUNT(*)
———-
11554580

Elapsed: 00:00:11.31
SQL> select count(*) from t where title not like ‘%手册%’;

COUNT(*)
———-
11554580



另外,我在另外一个2亿多的表,使用8个并行,使用like查询很久都不出来结果,但使用instr,4分钟即完成查找,性能是相当的好。这些小技巧用好,工作效率提高不少。通过上面的测试说明,ORACLE内建的一些函数,是经过相当程度的优化的。
分享到:
评论
1 楼 xwqiang 2013-03-20  
有这么大的差距吗 ,路过路过,学习学习!

相关推荐

    Oracle中Like与Instr模糊查询性能大比拼

    在Oracle数据库中,进行字符串匹配查询时,我们经常会遇到`LIKE`和`INSTR`这两个操作符。它们在处理模糊查询时各有特点,但性能上可能存在显著差异。本篇文章将探讨`LIKE`与`INSTR`在实际应用中的性能表现,并提供...

    oracle使用instr或like方法判断是否包含字符串

    首先想到的就是contains,contains用法如下: select * from students where contains(address, 'beijing') 但是,使用contains谓词有...另外,还有个笨办法,那就是使用like,说到这里大家应该知道怎么做了吧: sel

    informix数据库实现oracle环境instr函数功能

    ### Informix数据库实现Oracle环境INSTR函数功能 在数据库领域,不同类型的数据库系统可能支持不同的SQL函数特性。例如,Oracle数据库中的`INSTR`函数用于查找一个字符串在另一个字符串中的位置,而Informix数据库...

    Oracle中instr函数使用方法

    INSTR (源字符串, 目标字符串, 起始位置, 匹配序号) 在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置。只检索一次,就是说从字符的开始到字符的结尾就结束。 语法如下: instr( string1, string2 ...

    oracle查询效率调优实例

    ### Oracle 查询效率调优实例详解 在处理大量数据时,Oracle 数据库的查询性能往往成为系统瓶颈之一。本文将结合具体实例,介绍如何通过优化 SQL 语句来提高查询效率。 #### 一、Leading 提示与 Use_NL 提示 在...

    oracle中instr函数与substr函数详细说明(附实例)[归类].pdf

    Oracle instr 函数与 substr 函数详细说明 oracle 中的 instr 函数和 substr 函数是两种常用的字符串处理函数,它们可以用来处理和操作字符串数据。 Instr 函数 Instr 函数的主要作用是返回要截取的字符串在源...

    oracle_10g正则表达式_REGEXP_LIKE_用法

    下面将详细介绍`REGEXP_LIKE`的用法以及如何在Oracle 10g中使用正则表达式进行数据筛选。 ### Oracle 10g正则表达式与`REGEXP_LIKE` Oracle 10g支持多种正则表达式相关的函数,包括但不限于: 1. **`REGEXP_LIKE`...

    Oracle的substr和instr函数简单用法

    理解并熟练掌握`substr`和`instr`函数,能够极大地提高你在处理Oracle数据库中的字符串数据时的效率和灵活性。无论是进行简单的文本处理,还是复杂的SQL查询,这两个函数都能提供强大的支持。在实际应用中,常常会将...

    Oracle中的INSTR,NVL和SUBSTR函数的用法详解

    在Oracle数据库中,有三个非常重要的字符串处理函数:INSTR、NVL和SUBSTR。这些函数在处理文本数据时起到至关重要的作用。 1. **INSTR函数**: INSTR函数用于在一个字符串中查找另一个子字符串的位置。其基本语法...

    INSTR的用法 Oracle里的Indexof

    ### INSTR函数在Oracle数据库中的应用 #### 一、INSTR函数概述 INSTR是Oracle数据库中的一个常用字符串处理函数,其主要功能是在一个指定的字符串(目标字符串)中查找另一个字符串(搜索字符串)的位置。如果找到...

    Oracle中instr和substr存储过程详解

    instr和substr存储过程,分析内部大对象的内容 instr函数 instr函数用于从指定的位置开始,从大型对象中查找第N个与模式匹配的字符串。 用于查找内部大对象中的字符串的instr函数语法如下: dbms_lob.instr( lob_...

    Oracle如何对CLOB行字段来执行全文检索

    然而,在 Oracle8i 版本之前,对大字段 CLOB 仍然不支持在 where 子句直接的 Like 操作。这使得开发者无法直接对 CLOB 字段中的内容进行 Like 查找。幸运的是,通过使用 DBMS_LOB 包,我们可以实现对 CLOB 字段中的...

    Oracle中的instr()函数应用及使用详解

    Oracle中的`instr()`函数是一个非常实用的字符串处理函数,它用于在源字符串中查找目标字符串出现的位置。这个函数尤其在数据库查询和数据处理时发挥着重要作用。以下是对`instr()`函数的详细说明: 1. **函数基本...

    Oracle性能优化的基本准则总结

    8. **使用instr代替LIKE**:对于需要使用LIKE进行过滤的情况,可以考虑使用Oracle内置的instr函数,它通常比LIKE操作更快。 9. **避免使用UNION**:UNION操作会删除重复记录,这需要排序操作,可能会消耗大量资源。...

    Oracle分析函数基本概念和语法总结及Regexp_***用法

    Oracle分析函数是数据库管理系统Oracle中的一种高级查询工具,它们用于处理行集,...了解并熟练掌握Oracle分析函数和正则表达式函数,能显著提高在数据库管理和数据分析方面的效率,使得复杂的数据处理变得简单直观。

    Oracle中常用的通配符

    通过本文,我们将详细介绍Oracle中常见的通配符及其用法,帮助读者更好地理解和运用这些符号,从而提高SQL查询的灵活性和效率。 #### 一、通配符概述 在Oracle SQL中,通配符主要用于`LIKE`操作符中,用于模糊查询...

Global site tag (gtag.js) - Google Analytics