`
java-admin
  • 浏览: 1384104 次
  • 性别: Icon_minigender_1
  • 来自: 陕西.西安
社区版块
存档分类
最新评论

Oracle SQL 语句中对Like的优化

阅读更多
[color=red]1、尽量不要使用 like '%..%'
2、对于 like '..%..' (不以 % 开头),Oracle可以应用 colunm上的index
3、对于 like '%...' 的 (不以 % 结尾),可以利用 reverse + function index 的形式,变化成 like '..%' 代码
[/color]

建测试表和Index。
注意:重点在于带reverse的function index。同时,一定要使用CBO才行......

SQL> select reverse('123') from dual;
REVERSE('123')
--------------------------------
321
1 row selected.

SQL> create table test_like as select object_id,object_name from dba_objects;
Table created.

SQL> create index test_like__name on test_like(object_name);
Index created.

SQL> create index test_like__name_reverse on test_like(reverse(object_name));
Index created.

SQL> analyze table test_like compute statistics for table for all indexes;
Table analyzed.

SQL> set autot trace

--常量开头的like , 会利用index ,没问题......
SQL> select * from test_like where object_name like AS%';
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=655 Bytes=15720)
1 0 TABLE ACCESS (BY INDEX ROWID) OF 'TEST_LIKE' (Cost=2 Card=655Bytes=15720)
2 1 INDEX (RANGE SCAN) OF 'TEST_LIKE__NAME' (NON-UNIQUE) (Cost=2 Card=118)

-- 开头和结尾都是%,对不起,很难优化

SQL> select * from test_like where object_name like '%%';

Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=6 Card=655 Bytes=15720)
1 0 TABLE ACCESS (FULL) OF 'TEST_LIKE' (Cost=6 Card=655 ytes=15720)

-- 以常量结束,直接写的时候是不能应用index的
SQL> select * from test_like where object_name like '%S';
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=6 Card=655 Bytes=15720)
1 0 TABLE ACCESS (FULL) OF 'TEST_LIKE' (Cost=6 Card=655 Bytes=15720)

--'以常量结束的,加个reverse 函数,又可以用上index了'
SQL> select * from test_like where reverse(object_name)like reverse('%AS');
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=655 Bytes=15720)
1 0 TABLE ACCESS (BY INDEX ROWID) OF 'TEST_LIKE' (Cost=2 Card=655 Bytes=15720)
2 1 INDEX (RANGE SCAN) OF 'TEST_LIKE__NAME_REVERSE' (NON-UNIQUE) (Cost=2 Card=118)
分享到:
评论

相关推荐

    ORACLE常用SQL语句大全.pdf

    本文档总结了 Oracle 中常用的 SQL 语句,包括数据库的创建、删除、备份、表的创建、删除、修改、索引的创建、视图的创建等基本操作,以及一些高级查询运算符的使用。 一、数据库操作 * 创建数据库:CREATE ...

    Oracle——sql语句优化

    在Oracle数据库环境中,SQL语句的优化是提升查询效率、减少系统资源消耗的关键环节。通过对特定操作符的合理运用,可以显著改善数据检索的速度与准确性。本文将深入探讨几种常见的SQL操作符及其优化方法,包括IN、...

    OracleSQL的优化.pdf

    例如,在检索月薪大于 2000 的表达式中,如果 SQL 语句包括第一种情况,优化器会简单地把它转变成第二种。优化器不会简化跨越比较符的表达式,因此我们应该尽量写用常量跟字段比较检索的表达式,而不要将字段置于...

    oracle监听执行sql语句

    在Oracle数据库管理与维护过程中,有时候我们需要了解应用程序正在执行哪些SQL语句,这不仅有助于性能优化,还可以帮助我们诊断潜在的问题。通过监听执行SQL语句的方式,我们可以获取到当前会话正在执行的具体SQL...

    Oracle SQL语句优化技术分析

    Oracle SQL语句优化是数据库管理中的一个重要环节,通过优化SQL语句可以显著提升系统的响应速度、提高数据库资源的利用率以及改善用户体验。本文将从多个角度出发,详细介绍Oracle SQL语句优化的技术要点。 #### IN...

    ORACLE SQL 语句(典型应用总结).pdf

    在Oracle中编写SQL语句时,需要注意以下几点: - **大小写敏感性**:Oracle数据库默认对对象名不区分大小写,但为了保持一致性,建议使用大写字母。 - **分号结尾**:每条SQL语句通常以分号结尾。 - **关键字与...

    ORACLE SQL语句优化技术分析

    在分析Oracle SQL语句的优化技术之前,首先要认识到随着数据量的增长,SQL语句的性能将直接影响到整个系统的运行效率。优化SQL语句是提高数据库性能的关键环节。以下是根据文档内容提炼出的知识点: 1. 问题的提出...

    ORACLE SQL语句性能优化

    Oracle SQL语句性能优化是数据库管理员和开发人员关注的重要领域,因为高效的SQL语句能够显著提升数据库系统的响应速度,减少资源消耗,进而提高整体系统性能。以下是一些关键的优化策略: 1. **避免使用IN操作符**...

    oracle SQL语句优化概述

    SQL语句的优化是数据库管理领域中的一个重要课题,尤其在Oracle数据库中更是如此。优化执行SQL语句不仅可以提高应用程序的性能,还可以提升用户体验。本文旨在从Oracle的角度出发,探讨SQL语句优化的基本原则和技术...

    ORACLE_SQL语句优化技术分析

    ### ORACLE SQL语句优化...总之,在Oracle数据库中进行SQL语句优化是一个系统工程,需要从多个方面综合考虑,才能达到最佳的效果。希望本文提供的技巧能够帮助大家提高数据库查询性能,从而更好地支持业务系统的运行。

    oracle常用SQL语句下载

    Oracle SQL是用于管理和操作Oracle数据库的强大工具,它包含多种用于数据查询、操作、定义和控制的语句。本文将深入探讨Oracle SQL中的常见查询和计算功能。 首先,SQL(Structured Query Language,结构化查询语言...

    Oracle常用SQL语句复习

    本篇将基于"Oracle常用SQL语句复习"这一主题,深入探讨Oracle SQL的基本语法和常用操作,帮助读者巩固和提升Oracle数据库操作技能。 1. **数据查询基础** - `SELECT`语句是SQL中最基本的查询命令,用于从一个或多...

    Oracle数据库Sql语句详解大全.pptx

    本资源总结了 Oracle 数据库中 SQL 语句的详解大全,涵盖了 SELECT 查询、条件查询、运算符、空值处理、列别名、去重复行等多方面的知识点。 一、SELECT 查询 * 基本语法:SELECT 列名 > FROM 表名 > * 查询所有列...

    ORACLE-SQL语句优化技术分析.docx

    ORACLE SQL 语句优化技术分析 一、问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询 SQL 语句,复杂视图的编写等体会不出 SQL 语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,...

    Oracle SQL语句性能调整

    Oracle SQL语句性能调整是数据库管理系统中至关重要的环节,尤其在大数据量的环境中,优化SQL语句能够显著提升系统的响应速度和整体性能。在Oracle中,优化器会根据已有的索引来选择最优的执行计划,但若SQL编写不当...

    Oracle SQL 语句学习

    以上就是Oracle SQL语句学习中的核心知识点,涵盖了关系型数据库的基本概念、SQL语言的分类和功能、以及具体到SELECT语句的使用方法和相关操作。这些内容对于理解和运用Oracle SQL语句进行数据库操作是至关重要的...

    ORACLE_SQL语句优化技术分析11

    在Oracle数据库管理中,SQL语句的优化是提升系统性能的关键环节。特别是在大数据量的应用场景下,优化SQL语句能够显著提高查询速度,进而改善整个系统的响应时间。本文将针对SQL语句编写中的一些常见问题进行深入...

    oracle查询语句优化

    本文将从Oracle SQL语句优化的角度出发,详细探讨几种常见的查询优化方法。 #### 二、操作符优化 ##### 1. IN操作符 - **优点**:使用IN操作符编写的SQL语句易于理解和编写,符合现代软件开发风格。 - **缺点**:...

    ORACLE SQL语句执行效率研究.pdf

    总的来说,这篇文章为Oracle数据库管理员和开发者提供了实用的参考,对于如何识别和解决SQL语句中的性能瓶颈、优化查询语句提供了详细的指导。通过遵循这些指导原则,开发者可以显著提高数据库查询的效率,进而提升...

Global site tag (gtag.js) - Google Analytics