[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 语句,包括数据库的创建、删除、备份、表的创建、删除、修改、索引的创建、视图的创建等基本操作,以及一些高级查询运算符的使用。 一、数据库操作 * 创建数据库:CREATE ...
在Oracle数据库环境中,SQL语句的优化是提升查询效率、减少系统资源消耗的关键环节。通过对特定操作符的合理运用,可以显著改善数据检索的速度与准确性。本文将深入探讨几种常见的SQL操作符及其优化方法,包括IN、...
例如,在检索月薪大于 2000 的表达式中,如果 SQL 语句包括第一种情况,优化器会简单地把它转变成第二种。优化器不会简化跨越比较符的表达式,因此我们应该尽量写用常量跟字段比较检索的表达式,而不要将字段置于...
在Oracle数据库管理与维护过程中,有时候我们需要了解应用程序正在执行哪些SQL语句,这不仅有助于性能优化,还可以帮助我们诊断潜在的问题。通过监听执行SQL语句的方式,我们可以获取到当前会话正在执行的具体SQL...
Oracle SQL语句优化是数据库管理中的一个重要环节,通过优化SQL语句可以显著提升系统的响应速度、提高数据库资源的利用率以及改善用户体验。本文将从多个角度出发,详细介绍Oracle SQL语句优化的技术要点。 #### IN...
在Oracle中编写SQL语句时,需要注意以下几点: - **大小写敏感性**:Oracle数据库默认对对象名不区分大小写,但为了保持一致性,建议使用大写字母。 - **分号结尾**:每条SQL语句通常以分号结尾。 - **关键字与...
在分析Oracle SQL语句的优化技术之前,首先要认识到随着数据量的增长,SQL语句的性能将直接影响到整个系统的运行效率。优化SQL语句是提高数据库性能的关键环节。以下是根据文档内容提炼出的知识点: 1. 问题的提出...
Oracle SQL语句性能优化是数据库管理员和开发人员关注的重要领域,因为高效的SQL语句能够显著提升数据库系统的响应速度,减少资源消耗,进而提高整体系统性能。以下是一些关键的优化策略: 1. **避免使用IN操作符**...
SQL语句的优化是数据库管理领域中的一个重要课题,尤其在Oracle数据库中更是如此。优化执行SQL语句不仅可以提高应用程序的性能,还可以提升用户体验。本文旨在从Oracle的角度出发,探讨SQL语句优化的基本原则和技术...
### ORACLE SQL语句优化...总之,在Oracle数据库中进行SQL语句优化是一个系统工程,需要从多个方面综合考虑,才能达到最佳的效果。希望本文提供的技巧能够帮助大家提高数据库查询性能,从而更好地支持业务系统的运行。
Oracle SQL是用于管理和操作Oracle数据库的强大工具,它包含多种用于数据查询、操作、定义和控制的语句。本文将深入探讨Oracle SQL中的常见查询和计算功能。 首先,SQL(Structured Query Language,结构化查询语言...
本篇将基于"Oracle常用SQL语句复习"这一主题,深入探讨Oracle SQL的基本语法和常用操作,帮助读者巩固和提升Oracle数据库操作技能。 1. **数据查询基础** - `SELECT`语句是SQL中最基本的查询命令,用于从一个或多...
本资源总结了 Oracle 数据库中 SQL 语句的详解大全,涵盖了 SELECT 查询、条件查询、运算符、空值处理、列别名、去重复行等多方面的知识点。 一、SELECT 查询 * 基本语法:SELECT 列名 > FROM 表名 > * 查询所有列...
ORACLE SQL 语句优化技术分析 一、问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询 SQL 语句,复杂视图的编写等体会不出 SQL 语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,...
Oracle SQL语句性能调整是数据库管理系统中至关重要的环节,尤其在大数据量的环境中,优化SQL语句能够显著提升系统的响应速度和整体性能。在Oracle中,优化器会根据已有的索引来选择最优的执行计划,但若SQL编写不当...
以上就是Oracle SQL语句学习中的核心知识点,涵盖了关系型数据库的基本概念、SQL语言的分类和功能、以及具体到SELECT语句的使用方法和相关操作。这些内容对于理解和运用Oracle SQL语句进行数据库操作是至关重要的...
在Oracle数据库管理中,SQL语句的优化是提升系统性能的关键环节。特别是在大数据量的应用场景下,优化SQL语句能够显著提高查询速度,进而改善整个系统的响应时间。本文将针对SQL语句编写中的一些常见问题进行深入...
本文将从Oracle SQL语句优化的角度出发,详细探讨几种常见的查询优化方法。 #### 二、操作符优化 ##### 1. IN操作符 - **优点**:使用IN操作符编写的SQL语句易于理解和编写,符合现代软件开发风格。 - **缺点**:...
总的来说,这篇文章为Oracle数据库管理员和开发者提供了实用的参考,对于如何识别和解决SQL语句中的性能瓶颈、优化查询语句提供了详细的指导。通过遵循这些指导原则,开发者可以显著提高数据库查询的效率,进而提升...