`
MauerSu
  • 浏览: 514405 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Oracle模糊查询之(3.2从使用函数和sql语法角度来提高模糊查询效率 二)ORACLE中Like与Instr模糊查询性能大比拼

 
阅读更多
源:http://blog.csdn.net/haiross/article/details/12974851
评:

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

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





instr(title,'手册')>0  相当于  title like '%手册%'



instr(title,'手册')=1  相当于  title like '手册%'



instr(title,'手册')=0  相当于  title not 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内建的一些函数,是经过相当程度的优化的。



instr(title,’aaa’)>0 相当于like

instr(title,’aaa’)=0 相当于not like



特殊用法:



select   id, name from users where instr('101914, 104703', id) > 0;
  它等价于
select   id, name from users where id = 101914 or id = 104703;







使用Oracle的instr函数与索引配合提高模糊查询的效率

一般来说,在Oracle数据库中,我们对tb表的name字段进行模糊查询会采用下面两种方式:
1.select * from tb where name like '%XX%';
2.select * from tb where instr(name,'XX')>0;

若是在name字段上没有加索引,两者效率差不多,基本没有区别。

为提高效率,我们在name字段上可以加上非唯一性索引:
create index idx_tb_name on tb(name);

这样,再使用

select * from tb where instr(name,'XX')>0;

这样的语句查询,效率可以提高不少,表数据量越大时两者差别越大。但也要顾及到name字段加上索引后DML语句会使索引数据重新排序的影响。
分享到:
评论

相关推荐

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

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

    ORACLE和SQL语法区别归纳

    本文旨在为初学者提供关于Oracle与SQL Server在数据类型、函数及日期操作等方面的语法差异总结,帮助读者更好地理解这两种数据库管理系统的特点,并能够在实际应用中灵活选择合适的语法进行操作。 #### 数据类型...

    异种数据库函数和标准SQL语法比较Oracle与SqlServer.rar

    在实际工作中,结合使用Oracle和SQL Server的开发者应熟悉这些差异,以优化数据库操作并提高开发效率。文档“异种数据库函数和标准SQL语法比较020930N.doc”将详细解析这些点,为用户提供更深入的理解。

    SQL使用Like模糊查询

    在SQL(Structured Query Language)中,`LIKE` 模糊查询是一种非常实用的功能,它允许用户根据特定的模式匹配数据库中的数据。这个功能在数据检索、分析和处理时尤其有用,尤其是在我们不确定确切的搜索词或者需要...

    oracle和sql的语法区别大

    ### Oracle与SQL Server语法区别详解 #### 数据类型对比 **1. 字符数据类型** - **CHAR** - Oracle: 固定长度字符类型,最大长度2KB。 - SQL Server: 同样是固定长度字符类型,但最大长度达到了8KB。 **2. 变...

    Oracle数据库sql函数及语法

    Oracle数据库的SQL函数是数据库查询和管理中不可或缺的一部分,它们极大地丰富了SQL语言的功能,使得数据处理更加灵活和高效。以下是一些常见的Oracle SQL函数及其详细说明: 1. ASCII函数:ASCII函数返回一个字符...

    Oracle SQL语法速查

    Oracle数据库系统是世界上最广泛使用的数据库管理系统之一,其SQL(结构化查询语言)语法是管理和操作Oracle数据库的核心。本速查涵盖了Oracle SQL中的关键知识点,包括函数、语句、安装与卸载流程以及常用查询工具...

    Oracle_Sql_中常用字符串处理函数

    Oracle Sql 中提供了多种字符串处理函数,用于对字符串进行各种操作,如大小写转换、截取、连接、查找、替换等。下面是 Oracle Sql 中常用的字符串处理函数: 1. 大小写转换函数 Oracle Sql 提供了两个大小写转换...

    SQLServer和Oracle的常用函数对比

    本文将基于给定文件信息,深入探讨和对比SQLServer与Oracle中的一些常用函数,这些函数涵盖了数学运算、数值处理、字符串操作等多个方面,对于数据库开发者和管理员而言,掌握这些函数的使用方法是提升工作效率的...

    ORACLE与SQLSERVER中的语法区别

    ORACLE 与 SQL SERVER 中的语法区别 在数据库管理系统中,ORACLE 和 SQL Server 是两个常用的关系数据库管理系统。虽然它们都使用 SQL 语言,但是它们之间存在一些语法上的区别。这篇文章将详细介绍 ORACLE 和 SQL ...

    oracle SQL查询和SQL函数手册 基本涵盖了常用的

    这份手册详尽地介绍了如何有效地使用SQL语言来查询、分析和操作数据,旨在提供全面且实用的知识点。 1. **SQL基础概念** - **SQL**(Structured Query Language)是一种用于管理关系数据库的标准语言,包括数据...

    数据库中的模糊查询技术

    1.3 模糊查询语言:这是支持模糊查询的特定查询语法,如SQL的LIKE、INSTR等函数。 2 模糊查询 2.1 实现:模糊查询的实现通常涉及到特定的查询函数或操作符,例如SQL中的LIKE、ILIKE(不区分大小写)、BETWEEN等。 ...

    sql server和oracle中常用函数的比较

    - **SQL Server**与**Oracle**: 分别使用`MAX()`和`MIN()`函数,但在Oracle中可以使用`GREATEST()`和`LEAST()`函数来同时比较多个值。 16. **处理NULL值** - **SQL Server**: 使用`ISNULL()`函数。 - **Oracle**...

    SQLServer和Oracle常用函数对比

    - **Oracle**: 使用`DBMS_RANDOM.VALUE()`函数,需要从DUAL表中查询。 ```sql SELECT SYS.DBMS_RANDOM.VALUE(0, 1) AS Value FROM DUAL; ``` **13. 取符号** - **SQLServer**: 使用`SIGN()`函数。 ```sql ...

    oracle 和sql Server 函数对比

    在IT行业中,数据库管理系统(DBMS)是至关重要的组成部分,其中Oracle和SQL Server是最为广泛使用的两种DBMS。它们各自提供了丰富的内置函数来处理数据,包括数值、字符串、日期时间等类型的操作。本文将深入探讨...

    SQL数据库模糊查询内容语句

    在SQL(Structured Query Language)中,模糊查询是一种非常重要的功能,它允许我们使用通配符来匹配不完全或不确定的数据。这种查询方式在处理大量数据时尤其有用,比如在搜索关键词、查找类似记录或者进行数据清洗...

    Oracle_PL(SQL)单行函数和组函数及使用

    在Oracle数据库中,SQL 和 PL/SQL 提供了大量的内置函数,这些函数可以极大地提高开发效率和简化查询逻辑。根据处理数据的不同方式,这些函数可以分为单行函数和组函数两大类。 - **单行函数**:对每一行数据执行一...

    sql server 和oracle函数

    根据给定的信息,本文将对SQL Server与Oracle数据库系统中的函数进行详细对比分析,主要涉及数学函数、字符函数以及日期函数。以下是对这些知识点的具体展开: ### 数学函数 #### 绝对值 - **SQL Server**: 使用 `...

    oracle和sql的常用函数的区别

    在数据库管理领域,Oracle 和 SQL Server 是两种广泛使用的数据库系统,它们都提供了丰富的函数来处理各种数据类型。这里我们将详细探讨两者在数学函数、三角函数、数值比较以及字符串函数方面的异同。 1. **数学...

Global site tag (gtag.js) - Google Analytics