`
小嘴冰凉
  • 浏览: 456910 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

教你快速掌握Oracle数据库中的like优化-性能调优

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

    代码:

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

    sys@mescp> select reverse('123') from dual;REVERSE('123')
    --------------------------------
    321

    1 row selected.
    sys@mescp> create table test_like as select object_id,object_name from dba_objects;
    Table created.
    sys@mescp> create index test_like__name on test_like(object_name);
    Index created.
    sys@mescp> create index test_like__name_reverse on test_like(reverse(object_name));
    Index created.
    sys@mescp> analyze table test_like compute statistics for table for all indexes;
    Table analyzed.
    sys@mescp> set autotrace trace exp

    -- '常量开头的like , 会利用index ,没问题…… '
    sys@mescp> 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)

    --'开头和结尾都是 % ,对不起,很难优化'
    sys@mescp> 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的'
    sys@mescp> 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了'
    sys@mescp> 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)


http://www.diybl.com/course/7_databases/oracle/oraclejs/20100628/219507.html
分享到:
评论

相关推荐

    oracle 数据库性能调优

    因此,掌握Oracle数据库的性能调优技巧,对于DBA(数据库管理员)和开发人员来说至关重要。本文将围绕ROWID的结构与功能、B树索引的理解、索引使用限制及其解决方案、个人调优见解以及具体的优化方法等方面,提供...

    张烈-Oracle数据库讲义

    - **学习意义**:无论是对于数据库管理员还是开发人员来说,掌握Oracle数据库的核心技术和最佳实践都是非常重要的。通过学习Oracle数据库,不仅可以提升个人技能,还能更好地服务于企业和客户。 #### 二、SQL基础 -...

    行业分类-设备装置-一种从AIX平台向K-UX平台迁移的Oracle数据库迁移工具.zip

    本篇主要关注的是从AIX(Advanced Interactive eXecutive)平台到K-UX(Kubernetes上的Unix-like环境)平台的Oracle数据库迁移过程。AIX是IBM开发的一种强大且稳定的操作系统,广泛用于大型机和Power Systems服务器...

    oracle九大性能视图

    在Oracle数据库管理与优化的过程中,了解并掌握关键的性能视图对于提升系统性能至关重要。本文将重点介绍Oracle中的九大性能视图及其应用场景,并结合具体的示例来帮助读者更好地理解这些视图的作用。 #### 1. V$...

    ORACLE+设计与开发与DBA管理

    ### ORACLE设计与开发及DBA管理核心知识点详解 #### 一、Oracle数据库概述与学习方法 **Oracle数据库**是一款由Oracle...通过这些知识的学习,可以帮助读者更好地管理和优化Oracle数据库,提高系统的稳定性和性能。

    Oracle常用傻瓜问题1000问(最全)

    ### Oracle常用傻瓜问题知识点详解 ...以上知识点覆盖了Oracle数据库管理中的常见问题和解决方法,对于初学者来说非常实用。掌握了这些基本概念和技术,可以在日常工作中更高效地进行数据库管理和维护。

    oracle学习1000问

    从给定的文件信息中,我们可以提炼出一系列与Oracle数据库相关的知识...这些知识点覆盖了Oracle数据库从安装、配置到日常管理和优化的多个方面,对于Oracle的学习者和从业者而言,深入理解和掌握这些内容将大有裨益。

    Oracle DBA常用指令

    这些命令不仅能够帮助DBA快速了解数据库的状态,还能够有效地进行问题排查和性能调优。熟练掌握这些基本命令对于成为一名合格的Oracle DBA至关重要。在未来的工作中,随着对Oracle数据库更深入的理解和技术的发展,...

    SQL Language Reference

    #### 十、SQL优化与性能调优 - **索引管理**: - 创建索引:CREATE INDEX。 - 删除索引:DROP INDEX。 - 维护索引:REBUILD INDEX。 - **执行计划分析**: - 使用EXPLAIN PLAN分析执行计划。 - **分区技术**: ...

    数据库管理员日常工作中必备的 sql

    13. 缓存分析语句:对于Oracle数据库,管理员可以通过一系列的SQL语句来分析数据库缓冲区缓存中的对象使用情况,这有助于理解哪些数据被频繁访问。 通过熟练掌握上述SQL命令和知识,数据库管理员能够高效地进行...

    oracle常用命令

    以上命令覆盖了Oracle数据库中索引管理和数据完整性维护的核心操作,对于DBA和开发人员而言,熟练掌握这些命令不仅能够提高数据库的运行效率,还能确保数据的安全性和一致性。在实际应用中,应根据具体需求灵活运用...

    Sybase 12.5.4 for solaris.rar

    7. **性能调优**:学习监控和优化 Sybase 数据库的性能,包括索引建立、查询优化、内存管理和磁盘I/O调整。 8. **故障排查**:了解常见错误和异常的处理方法,以及日志文件的解读,以便快速定位问题。 9. **安全性...

    dab常用SQL语句

    根据提供的文件信息,我们可以总结出一系列DBA(数据库管理员)常用的SQL语句,这些语句在Oracle数据库管理中非常实用。下面将详细解释每个SQL语句的功能及其应用场景。 ### SQL语句1:查询等待事件 ```sql select...

Global site tag (gtag.js) - Google Analytics