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

Oracle的操作符优化技术初步

阅读更多

 IN 操作符

用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格。

但是用IN的SQL性能总是比较低的,从ORACLE执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别:

ORACLE 试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外层的表记录,如果转换成功则直接采用多个表的连接方式查询。由此可见用 IN的SQL至少多了一个转换的过程。一般的SQL都可以转换成功,但对于含有分组统计等方面的SQL就不能转换了。

推荐方案:在业务密集的SQL当中尽量不采用IN操作符。

NOT IN操作符

此操作是强列推荐不使用的,因为它不能应用表的索引。

推荐方案:用NOT EXISTS 或(外连接+判断为空)方案代替

<> 操作符(不等于)

不等于操作符是永远不会用到索引的,因此对它的处理只会产生全表扫描。

推荐方案:用其它相同功能的操作运算代替,如

a<>0 改为 a>0 or a<0

a<>’’ 改为 a>’’

IS NULL 或IS NOT NULL操作(判断字段是否为空)

判断字段是否为空一般是不会应用索引的,因为B树索引是不索引空值的。

推荐方案:

用其它相同功能的操作运算代替,如

a is not null 改为 a>0 或a>’’等。

不允许字段为空,而用一个缺省值代替空值,如业扩申请中状态字段不允许为空,缺省为申请。

建立位图索引(有分区的表不能建,位图索引比较难控制,如字段值太多索引会使性能下降,多人更新操作会增加数据块锁的现象)。

> 及 < 操作符(大于或小于操作符)

大 于或小于操作符一般情况下是不用调整的,因为它有索引就会采用索引查找,但有的情况下可以对它进行优化,如一个表有100万记录,一个数值型字段A, 30万记录的A=0,30万记录的A=1,39万记录的A=2,1万记录的A=3。那么执行A>2与A>=3的效果就有很大的区别了,因为 A>2时ORACLE会先找出为2的记录索引再进行比较,而A>=3时ORACLE则直接找到=3的记录索引。

LIKE操作符

LIKE 操作符可以应用通配符查询,里面的通配符组合可能达到几乎是任意的查询,但是如果用得不好则会产生性能上的问题,如LIKE ‘%5400%’ 这种查询不会引用索引,而LIKE ‘X5400%’则会引用范围索引。一个实际例子:用YW_YHJBQK表中营业编号后面的户标识号可来查询营业编号 YY_BH LIKE ‘%5400%’ 这个条件会产生全表扫描,如果改成YY_BH LIKE ’X5400%’ OR YY_BH LIKE ’B5400%’ 则会利用YY_BH的索引进行两个范围的查询,性能肯定大大提高。

分享到:
评论

相关推荐

    oracle索引学习初步

    4. 避免索引失效的操作:如在索引列上使用NOT操作符、计算表达式或函数,都可能导致索引无法被使用。 六、索引策略 建立索引并不意味着性能必然提高,合理的索引策略应考虑以下几点: 1. 数据分布:根据数据的均匀...

    linux下oracle10安装

    最后,启动Oracle数据库服务并进行初步的性能优化,例如调整SGA(System Global Area)大小,确保初始化参数文件(`init.ora`或`spfile.ora`)中的设置适合你的系统。 总之,Linux下安装Oracle 10g涉及多个步骤,从...

    Oracle数据库的安装

    以上就是Oracle数据库在Windows环境下的安装过程及初步使用方法。对于初学者,理解并熟练掌握这些步骤是至关重要的,这将帮助你更好地理解和操作Oracle数据库系统。在实践中,你还可以探索更多高级特性,如数据备份...

    oracle安装

    Oracle数据库的安装过程是一个...以上是Oracle在Linux环境下的安装准备和初步安装步骤,实际操作中还需考虑防火墙配置、安全策略、性能调优等多个方面。确保遵循官方文档和最佳实践,以确保数据库的稳定性和安全性。

    从SQLServer迁移大批量数据到Oracle

    随着业务的发展和技术的进步,企业可能需要将现有的 SQL Server 数据库迁移到 Oracle 数据库。本文将详细介绍从 SQL Server 迁移大批量数据到 Oracle 的方法和具体的操作步骤。 #### 关键技术与工具 - **SQL ...

    ORACLE安装成功方法

    1. **初步准备**:创建一个专门的Oracle用户,以非管理员权限运行安装程序。此外,创建一个目录结构,例如`/u01/app/oracle`,用于存放Oracle软件和数据文件。 2. **运行安装程序**:双击下载的安装文件,启动...

    在_Oracle_Enterprise_Linux_5_上从头安装_Oracle_数据库_11g

    ### 在Oracle Enterprise Linux 5上从头安装Oracle数据库11g的知识点 ...此文档不仅提供了一次性安装指导,还包含了后期使用和管理Oracle数据库所需的基础知识,是进行评估和初步部署的理想参考材料。

    Oracle Database 11g - SQL Fundamentals I

    6. 高级查询:掌握使用WHERE子句进行条件筛选,理解LIKE、BETWEEN、IN和NOT IN等操作符。学习使用CASE表达式进行条件判断,以及使用DISTINCT去除重复行。 7. 视图:了解视图的概念,如何创建和管理视图,以及视图在...

    Excel文件数据导入Oracle

    本文将详细介绍如何利用Oracle自带工具SQL\*Loader进行这一操作,包括创建Excel文件、控制文件、批处理文件以及执行导入过程。 #### 一、理解SQL\*Loader SQL\*Loader是Oracle提供的一种高效的数据导入工具,适用...

    清华大学计算中心ORACLE培训资料

    8. **性能优化**:讨论如何通过SQL优化、索引调整和分区技术提升数据库性能。 9. **安全性**:介绍Oracle的权限和角色管理,如何设置用户权限,以及数据库审计和安全策略。 10. **Oracle网络配置**:讲解Oracle...

    Oracle经典教程

    - 通过本章的学习,读者能够对Oracle数据库有一个初步的认识,并掌握基本的操作方法。 ### 第二章:SQL数据操作和查询 **2.1 SQL简介** - **定义:** - SQL(Structured Query Language)是一种标准化的语言,...

    Oracle 11gR2 for RHEL6 安装手册含备份方案超详细-魏伟新版

    至此,我们已经完成了系统的初步配置,接下来可以进入Oracle数据库的安装流程。 #### 三、安装软件 ##### 1. 安装ORACLE软件 在完成系统环境配置之后,接下来是安装Oracle 11gR2软件。这个过程涉及解压Oracle安装...

    oracle课件

    4. 集合操作:讨论UNION、INTERSECT和EXCEPT等操作符,用于合并或比较查询结果集。 5. 视图:学习如何创建和使用视图,以简化复杂的查询逻辑。 通过这套课件的学习,你将能够全面了解Oracle数据库的管理和SQL查询...

    Oracle #1Z0-031

    这个认证是Oracle Certified Associate(OCA)到Oracle Certified Professional(OCP)晋升路径的关键步骤,旨在验证考生对Oracle数据库管理的基本理解和操作能力。 Oracle9i数据库管理员基础涵盖了以下几个核心...

    Oracle及PL\SQL入门语句

    - **练习7**:查找课程名称包含“数据”的所有课程和对应学生的信息,利用`LIKE`操作符进行模糊匹配。 3. **PL/SQL基础知识**: 虽然在给定的描述中没有直接展示PL/SQL代码,但可以推断在实际操作中,可能需要...

    oraclecle入门到精通

    - **集合操作符**:UNION、INTERSECT、MINUS用于组合或排除不同查询的结果集。 2. **SQL*Plus命令** - **连接数据库**:使用CONNECT命令登录到Oracle数据库实例。 - **查询帮助**:HELP或?命令提供SQL*Plus内部...

    JAVA实习报告-4500字.doc

    JAVA语言的语法接近C/C++,但摒弃了复杂和难以理解的部分,如操作符重载和多继承。JAVA支持动态绑定,提供网络应用编程接口,便于Internet应用的开发。 通过实习,作者对JAVA的面向对象特性有了更深刻的理解,包括...

    创建RAC笔记

    编辑/etc/security/limits.conf文件,提高Oracle用户进程的文件描述符和内存限制,确保数据库服务稳定运行。 #### 磁盘分区与rpm包安装 对新增硬盘进行分区,并安装必要的rpm包,为RAC环境准备必要的软件环境。 #...

    JDK 7 源码

    在创建匿名内部类或使用泛型时,JDK 7允许省略类型参数,这被称为钻石操作符 `&lt;&gt;`. 它简化了代码,使得类型推断更为直观。 5. **字符串连接优化** 在JDK 7中,字符串连接操作进一步优化,使用StringBuilder或者...

Global site tag (gtag.js) - Google Analytics