浅谈油田oracle数据库开发中的SQL优化
浅谈Oracle数据库SQL性能优化

1引言 随着 软件 技术 的不 断发展 , 系统性 能越来 越重 要。 信息系统都 离不开 数据库应用, 而O r a c l e  ̄据库的应 用系统一般规模 比较大, 如 何优化O RAC L E 数据库 的性能就显得尤为重要 。 为 了保证O r a c l e  ̄ 据库运行在最佳 的性能状态下 , 在信息系统开发之前就应该考虑数 据库 的优化策 略。 优化策略一般包括服务器操作系统参数调整 、 数 据库参数调整 、 网络 性能调整 、 应用程序s Q 分析及设计等几个 方面 , 本文就如何优化s Q L 语句的方法 来实现对O RAC L E 数据库性 能的优化 。
时 间 最 少 的也 就 是 所 谓 成 本 最 低 的一 种 方 法 。
( 1 ) 索引优化 要尽可 能的使 用索引 , 减少磁盘 的I / 0 操作 。 ( 2 ) 连接手段 在进行查询连接 时优化器将所有连接 的方法全 来强迫选择最佳索引 。 部列举 出来 , 计算每一种连接的成本, 选择成本最低的一种 。 如连接 例如: s e l e c t * f r o m t b— — r p — — b i z s _ a p p — — f i n— — l i s t w h e r e a p p— — d a t e > 时用 到的数据 无法 获得 , 一般 系统会使 用平均密度作为依据 , 估算 y s d a t e 一1 a n d a p p — da t e <s ys da t e a n d e x c h — i d = 9 1 0 0 1 ’ 可能的命 中率 。 如, 一个存储过程或触 发器 中, 有表达 式的值在编译 s 时无法得到 , 优 化器 就只能使用 它的平均密度 来估 计命 中的记录 O RAC L E 选择 的是 e x c h _ i d 索引为先 , a p p _ d a t e 索引在后 , 数。 例如: D EC L ARE @v lu a e mo n e y 如果用RUL E 规则, 也只会选择 e x c h _ i d索引 , 表分析 后仍 不改变 S E L E C T n a me F RO M e mp l o y e e W HE R E s a l a r y =@v a l u e 选择 ( OR AC L E 对确 定条件的优先级权值 比非确定条件高 ) 只是 由于 ̄ a l u e 的值在执行 前不知道 , 它 只能使用其平均密度来估 解决方法 : 计这条命令将要命 中的记录数 。 a ) e x c h _ i d= ‘ 9 1 0 0 1 ’改 为 e x c h _ i d l l ”=‘ 9 1 0 0 1 ’ b ) s e l e c t后面使用强制索引条件 , 强制不让 使用e x c h _ i d 索引 ( 3 ) 其他 手段 如 , 数 据表 空间和索引表 空间的分 离 , 关系密切 的表之间的表空 间的分离 , 表 空间的物理分布 , 都可以提 高应用的 s e l ct/ e * + n o _ i n d e x ( a i d x _ r p — b i z s a p p f i n l i s t 一 5 ) / * f r o m t b —r p — bi z s _ a pp — in f _ l i s t a w he r e a p p— d a t e >s ys da t e —l a n d 性 能。 a p p _ d a t e <s ys d a t e a nd e xc h _ i d =’ 9 1 0 0 1 ’ 遵守这些原则就可 以优化排序操作 , 提 高s Q L 查询性 能。 2 ) 对于多表关联查询 , 需要通过观察执行计划和S QL 语句的关 3 Or a c l e 数据库S QL 查询优化的过程和方法 联条件 , 找出当前索引路径 , 分析最佳索引路径 , 通过屏 蔽等手段让 3 . 1 Or a c l e  ̄ l 据 库S QL 查询 语 句 处理过 程 下转第 1 9 6 页
OracleSQL性能优化及案例分析

OracleSQL性能优化及案例分析标题:Oracle SQL性能优化及案例分析一、引言Oracle数据库作为全球最受欢迎的数据库之一,其性能优化问题一直是用户和开发者的焦点。
尤其是在处理大量数据或复杂查询时,性能问题可能会严重影响应用程序的响应时间和用户体验。
因此,对Oracle SQL进行性能优化及案例分析显得尤为重要。
二、Oracle SQL性能优化1、索引优化索引是提高Oracle SQL查询性能的重要工具。
通过创建合适的索引,可以大大减少查询所需的时间,提高数据库的响应速度。
然而,过多的索引可能会导致额外的存储空间和插入、更新、删除的性能损失。
因此,需要根据实际应用的需求,合理地选择需要索引的字段。
2、查询优化编写高效的SQL查询语句也是提高Oracle SQL性能的关键。
这包括选择正确的查询语句、避免在查询中使用复杂的子查询、使用连接(JOIN)代替子查询等。
还可以使用Oracle SQL Profiler来分析和优化查询语句的性能。
3、数据库参数优化Oracle数据库有许多参数可以影响SQL性能,如内存缓冲区、磁盘I/O参数等。
根据实际应用的需求和硬件环境,对这些参数进行合理的调整,可以提高Oracle SQL的性能。
三、案例分析1、案例一:索引优化问题描述:在一个电商系统中,用户在搜索产品时,使用全文本搜索功能时经常出现延迟。
解决方案:通过分析用户搜索的习惯和需求,对产品表的名称和描述字段创建全文索引。
同时,调整Oracle的全文搜索参数以提高搜索效率。
2、案例二:查询优化问题描述:在一个银行系统中,客户查询自己的贷款信息时,查询时间过长。
解决方案:通过使用Oracle SQL Profiler分析查询语句,发现查询中存在复杂的子查询。
将子查询改为连接(JOIN)方式,减少了查询时间。
3、案例三:数据库参数优化问题描述:在一个大型电商系统中,用户在访问高峰期经常遇到响应时间过长的问题。
oracle sql优化原理

oracle sql优化原理Oracle SQL优化原理概述在大型企业级数据库系统中,SQL查询的性能是至关重要的。
Oracle数据库是一种广泛使用的关系型数据库管理系统,为了提高查询性能和优化数据库的运行效率,开发人员需要了解Oracle SQL 优化的原理和方法。
本文将介绍一些常见的Oracle SQL优化原理,帮助开发人员更好地理解和应用这些原理。
1. 索引的使用索引是数据库中常用的一种优化技术,可以加快数据的查询速度。
在Oracle数据库中,可以通过创建适当的索引来优化SQL查询。
索引可以根据查询的条件快速定位到相关的数据,减少数据的扫描量。
在使用索引时,需要注意选择合适的索引列,避免过多的索引造成查询性能下降。
2. 表结构设计合理的表结构设计对于SQL查询的性能也有很大影响。
首先,需要根据业务需求来设计合适的表结构,避免冗余数据和不必要的字段。
其次,需要合理选择字段类型和大小,避免字段长度过长或者过短造成存储空间的浪费。
另外,还需要注意表之间的关联关系,避免多表连接操作过多,导致查询性能下降。
3. SQL语句的编写SQL语句的编写方式也会对查询性能产生影响。
首先,需要避免使用不必要的子查询和嵌套查询,可以通过合理的SQL语句重构来提高查询效率。
其次,需要避免使用SELECT *这样的通配符查询,而是明确指定需要查询的字段,减少不必要的数据传输和处理。
另外,还需要注意使用合适的条件表达式和操作符,避免全表扫描和索引失效。
4. 统计信息的收集Oracle数据库中的统计信息对于查询优化也起着重要的作用。
统计信息包括表的行数、列的唯一值数目、列的分布情况等,可以帮助优化器选择合适的执行计划。
在查询优化过程中,可以通过定期收集统计信息来保证查询的性能。
可以使用Oracle提供的统计信息收集工具来自动收集和更新统计信息。
5. SQL执行计划的分析Oracle数据库提供了执行计划用于分析SQL查询的执行情况。
浅谈Oracle数据库SQL性能优化

千里之行,始于足下。
浅谈Oracle数据库SQL性能优化
SQL性能优化在Oracle数据库中是非常重要的,并且是一个复杂而繁琐的过程。
下面是一些常见的SQL性能优化技巧。
1. 使用正确的索引:索引是加快查询速度的重要因素。
确保表中的列被正确索引,以便Oracle能够快速定位所需的数据。
2. 优化查询语句:编写高效的查询语句是提高性能的关键,避免使用大量的子查询、联合查询以及不必要的计算。
3. 提高表的设计:优化表的结构和设计,包括拆分表、合并表、垂直分区和水平分区等。
4. 使用合适的数据类型:使用合适的数据类型可以节省存储空间和提高查询效率。
5. 避免使用全表扫描:全表扫描是一种费时的操作,尽量避免使用它,使用索引或其他技术来提高查询效率。
6. 分析并优化执行计划:使用Oracle的性能分析工具来分析查询执行计划,找出慢查询的原因,并优化查询的执行计划。
7. 优化硬件和服务器配置:提高服务器的性能,如增加内存、优化磁盘和网络等。
8. 定期收集统计信息:定期收集表和索引的统计信息,以便Oracle优化查询的执行计划。
第1页/共2页
锲而不舍,金石可镂。
9. 使用缓存和预编译:使用数据库缓存和预编译技术来提高查询速度。
10. 并发控制:合理设计并发控制机制,避免不必要的锁和死锁,提高查询和更新的并发性能。
总之,SQL性能优化是一个综合性工作,需要深入了解Oracle数据库的架构和原理,并结合具体的业务场景进行优化。
通过合理的索引设计、优化查询语句、优化表设计以及优化硬件和服务器配置等手段,可以大大提高Oracle数据库的性能。
Oracle数据库中SQL语句的优化与分析

第 7步 :Rn te Sa ee t u h t tm n
第 8步 :F t h R w f a Q e y ec o so ur
第 9步 :C o e t e C r o l s h u s r
下面 来详 细分 析这 些步骤 : 第 1 :C e t u s r 步 r a e a C r o
执 行每 个 S L 句 ,Oa l Q语 r ce需要 实现 很多 步骤 。Oa l r ce用 来 执 行 语句 的这 些 步骤 的组 合 被 称之 为执 行 计 划 。执 行 计 划 是 S L 化 中最为 复杂 也是最 为关 键 的部分 ,只有 知道 了 Oa l 在 O优 rce 内部到 底是 如何执 行 该 S L 句后 ,我们才 能知 道优 化器 选择 的 O语 执 行计 划是 否为 最优 的 。如何 分析 执行计 划 ,从 而找 出影 响性 能
s l ce ss ia l rno . e e td a u tbeo t
Ke wo d :QLOrceOpi zt n y r sS ; a l; t ai mi o
一ቤተ መጻሕፍቲ ባይዱ
、
引 言
第 6步 : P r l e i e t e S a e e t a a l l z h t t m n
S ,ny k o h w a l itmal x c t QL sae n, a o f m h ttee euinpa eeteo t z t n QL o l n w o Orce ne l e eueS ttme t cn cn r ta h x c t l wh r h pi ai r y we i o n mi o
的主要 问题 。下面 先 从分析 S L 句执 行步 骤 开始介 绍 ,再介 绍 O 语 如 何分 析执行 计划 。优 化器 有 时也被 称 为查询 优 化器 ,这 是因 为 查 询是 影响数 据库 性 能最主 要 的部分 ,优 化器 是所 有 关系数 据库 引擎 中的最神 秘 、最 富挑 战性 的部件 之一 ,从 性 能的角 度看 也是 最 重要 的部分 ,它 性 能的高低 直接 关 系到数 据库 性能 的好坏 。 二 、0 a l r c e的优化规 则 ( )什 么是优 化 一
oracle的sql优化

Oracle SQL 优化Oracle SQL 优化是指通过使用各种技术来提高 Oracle SQL 查询的性能。
这些技术包括:使用索引:索引可以帮助 Oracle 数据库快速找到数据,从而提高查询性能。
使用分区:分区可以将大型表分成更小的部分,从而提高查询性能。
使用物化视图:物化视图是预先计算的查询结果,可以提高查询性能。
使用连接提示:连接提示可以告诉 Oracle 数据库如何连接表,从而提高查询性能。
使用并行查询:并行查询可以同时使用多个处理器来执行查询,从而提高查询性能。
Oracle SQL 优化器 :Oracle SQL 优化器是一个内置的工具,可以帮助用户优化 SQL 查询。
优化器会分析查询并生成一个执行计划,该计划指定了 Oracle 数据库将如何执行查询。
用户可以通过查看执行计划来了解查询的性能瓶颈,并进行相应的优化。
Oracle SQL 优化技巧:使用 EXPLAIN PLAN 命令:EXPLAIN PLAN 命令可以显示查询的执行计划。
使用绑定变量:绑定变量可以防止 SQL 语句在每次执行时都重新编译。
使用批处理:批处理可以将多个 SQL 语句组合成一个批处理作业,从而提高性能。
使用游标:游标可以逐行处理数据,从而提高性能。
使用临时表:临时表可以存储中间结果,从而提高性能。
Oracle SQL 优化工具:Oracle SQL Developer:Oracle SQL Developer 是一个集成开发环境,可以帮助用户开发和优化 SQL 查询。
Oracle Enterprise Manager:Oracle Enterprise Manager 是一个管理工具,可以帮助用户监控和优化 Oracle 数据库。
Oracle SQL Tuning Advisor:Oracle SQL Tuning Advisor 是一个工具,可以帮助用户自动优化 SQL 查询。
Oracle数据库的sql语句性能优化

Oracle数据库的sql语句性能优化 在应⽤系统开发初期,由于开发数据库数据⽐较少,对于查询sql语句,复杂试图的编写等体会不出sql语句各种写法的性能优劣,但是如果将应⽤系统提交实际应⽤后,随着数据库中数据的增加,系统的响应速度就成为⽬前系统需要解决的最主要问题之⼀。
系统优化中⼀个很重要的⽅⾯就是sql语句的优化。
对于海量数据,劣质sql语句和优质sql语句之间的速度差别可以达到上百倍,可见对于⼀个系统不是简单地能实现其功能就⾏,⽽是要写出⾼质量的sql语句,提⾼系统的可⽤性。
Oracle的sql调优第⼀个复杂的主题,甚⾄需要长篇概论来介绍OracleSQL调优的细微差别。
不过有⼀些基本的规则是每个OracleDBA都需要遵从的,这些规则可以改善他们系统的性能。
sql调优的⽬标是简单的:消除不必要的⼤表全表搜索。
不必要的全表搜索导致⼤量不必要的磁盘I/O,从⽽拖慢整个数据库的性能,对于不必要的全表搜索来说,最常见的调优⽅法是增加索引,可以在表中加⼊标准的B树索引,也可以加⼊位图索引和基于函数的索引。
要决定是否消除⼀个全表搜索,你可以仔细检查索引搜索的I/O开销和全表搜索的开销,它们的开销和数据块的读取和可能的并⾏执⾏有关,并将两者作对⽐。
另外,在全表搜索是⼀个最快的访问⽅法时,将⼩表的全表搜索放到缓存(内存)中,也是⼀个⾮常明智的选择。
我们会发现现在诞⽣了很多基于内存的数据库管理系统,将整个数据库置于内存之中,性能将得到质的飞跃。
⼀、与索引相关的性能优化 在多数情况下,Oracle使⽤索引来更快地遍历表,优化器主要根据定义的索引来提⾼性能。
但是,如果在sql语句的where⼦句中写的sql代码不合理,就会造成优化器删去索引⽽使⽤全表扫描,⼀般这种sql语句就是所谓的劣质sql语句。
在编写sql语句时我们应清楚优化器根据何种原则来删除索引,这有助于写出⾼性能的sql语句。
1.IS NULL 与 IS NOT NULL 不能⽤null做索引,任何包含null值的列都将不会被包含在索引中,即使索引有多列这样的情况下,只要这些列中有⼀列含有null,该列就会从索引中排除。
Oracle sql 性能优化调整

Oracle sql 性能优化调整一、前言Oracle SQL是众多企业使用较多的关系型数据库之一,因其高效稳定的性能,以及其提供的强大功能,逐渐成为了广大企业进行信息系统开发、实施和数据管理的首选。
然而,在大数据时代,普通的SQL查询已经不能支撑企业的业务需求,尤其是在数据量庞大的情况下,SQL查询的效率和性能将会受到严重的制约。
本文旨在介绍Oracle SQL的性能优化调整方法,以提高企业的数据处理的效率和性能。
二、排查问题SQL性能优化的第一步是排查问题,需要对慢查询做出明确的定位。
首先需要对SQL进行分析,寻找哪个部分影响了SQL性能,包括:1.查询语句的风格是否规范。
2.SQL语句是否能够使用索引优化查询。
3.数据库的表大小是否合适。
4.缓存的大小是否合适。
5.应用响应时间是否过长。
在分析完成后,才能通过性能优化来解决问题。
三、优化处理1.优化SQL查询语句SQL查询最主要的性能瓶颈是IO瓶颈。
当表的大小超过1万条时,应该对查询语句进行合理的检索,即避免全表扫描。
对大于1万条的表,应该创建索引,以便提高SQL的效率。
2.优化SQL查询计划查询计划优化是SQL调优的关键。
因为优化查询计划是确定整个查询需要的资源和查询的优化路径。
优化查询计划意味着查询应该从哪些索引开始,除了哪些索引以外,以及使用哪些操作符等等。
这些优化计划将明显影响查询性能。
3.优化表结构和索引优化表结构和索引也是常用的Oracle SQL优化方法。
表结构的优化主要是考虑数据库表的设计是否符合0NF、1NF、3NF等规范,是否有多列重复,是否存在无用列,是否存在大型BLOB/CLOB列等问题。
对于索引优化,可以使用多个单列索引代替多列复合索引以提高查询更新效率。
此外,还可以考虑使用等值连接或外连接改变查询本身,以便减少查询的数据量。
4.优化服务器硬件和操作系统软件硬件和操作系统软件的优化也很重要,因为数据库运行的效率和性能取决于服务器硬件和操作系统软件是否能够同时支持PMI和CPU等高性能功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2008
前言
几年来我厂针对油气田管理先后开发了地质应用软件、矿 级日报、月报系统、天然气管理系统等一些实际生产应用软件。 目前我厂大型数据信息统计、生产动态分析、措施效果追踪等 难度较大的工作大部分都是利用开发数据库中的数据信息, 这就 涉及到如何更好的管理和有效的利用数据库中的数据来提高我 们的工作效率。从大多数系统的应用实例来看,随着数据库中数 据的增加,系统的响应速度就成为系统需要解决的最主要的问题 之一。系统优化中一个很重要的方面就是SQL 语句的优化。据 统计,约有90 %的性能问题是由于程序员或用户使用了不恰当的 查询语句造成的,因此SQL 语句的质量对整个系统效率有重大关 系。对于海量数据来说,劣质SQL 语句和优质SQL 语句之间的 速度差别可以达到上百倍,甚至更多。
2.2.1 我们经常会遇到的是SQL 语句中根本没有 WHERE 条件子句。这样ORACLE系统在执行这条 SQL语句时就会整表扫描,大大降低查询效率。
2008
2.2.2 SQL 语句的条件中使用NULL 、IS NOT NULL或是不 相等的条件,将使索引失效,系统也会全表扫描,降低效率,如:
2008
2.2.3索引字段被包含在了表达式中,使索引失效,例如: select max(distinct ny) from dba05;
select * from daa01 where upper(qkdy) = 'PTHBB';
update dba05 set skjd= skjd*100 where jh='7P70-66’;
SELECT JH from daa01 不能共享的原因:大小写不同
SELECT jh FROM DAA01 不能共享的原因:空格数不一致
2008
②两条语句必须使用相同的名字的绑定变量。 SELECT jh ,kgrq from DAA02 where kzrq = :rq.year该语句不能与下面的语句共享: SELECT jh ,kgrq from people where kzrq = :rq.value 原因:绑定变量变化 SELECT jh ,kgrq from people where kzrq = ’2008’ 原因:绑定变量换成了常量
2008
2、SQL语句的优化方法
2.1共享SQL语句
根据ORACEL 中SQL 语句的执行过程可知,如果能够共享 共享池中的SQL语句将是比较优化的选择。要共享SQL语句需 满足以下两个条件。
①当前被执行的语句和共享池中的语句必须完全相同,例如:
SELECT JH FROM DAA01 只能与 SELECT JH FROM DAA01 共享, 即需要完全一致, 下面的SQL 语句就不能与之实现共享:
此外,SQL 的性能优化是一个复杂的过程,以上着重从 实现的角度讨论了SQL 语句优化,实际上要想根本解决查询 优化问题还会涉及数据库的结构设计与资源配置、网络的 流量控制以及操作系统的总体设计等等。
谢谢
2008 1、ORACLE 中SQL 语句的执行过程
如何知道一个SQL 语句的优劣,首先要了解一下 ORACLE 中SQL 语句的执行过程。
一个SQL 语句在ORACEL 中执行大概分为以下6 个过程:
①计算语句值; ②共享池中有无与此语句字符完全匹配的语句; ③准备要运行的SQL 语句; ④为新语句在共享池中创建空间; ⑤将语句存放在共享池中; ⑥执行准备好的SQL 语句。
由此可以看出,在使用动态查询时,尽量使用一个 绑定变量, 然后具体赋值, 这样可以使用共享SQL ,减 少编译次数,加快SQL 的执行速度。
2008
2.2 正确的使用索引
索引可以加快查询的速度,是提高SQL 语句执行速 度的较好方法。但如果SQL 语句编写不当,索引将起不 到任何作用,反而会影响系统的性能。引起索引失效有 以下几种方式:
类似这样的语句,应该将WHERE 子句中的左侧只 写索引字段,而在等号右侧使用表达式,这样就可以利用 索引,达到优化的目的。
2008
2.2.4使用LIKE 条件, %放在值之前,使索引失效,例如:
select * from daa01 where jh like '%7P10%';
SELECT jb FROM daa01 WHERE bz IS NULL; SELECT jb FROM daa01 WHERE mqjb !=’31’;
以上第一句是因为NULL值并没有被定义。在SQL语句 中使用NULL会有很多的麻烦。因此建议开发人员在建表时, 把需要索引的列设成NOT NULL。如果被设置为索引的列 在某些行中存在NULL值,就不会使用这个索引。
2008
2.2.7比较不匹配的数据类型
比较不匹配的数据类型也是比较难于发现的性能问题之一。
注意下面查询的例子,假设xqkdm是一个VARCHAR2类型的 字段,并且在该字段上有索引。
下面的语句将执行全表扫描。
select jh,cyjh,cw,mqjb
from daa01 where xqkdm=5101; Oracle可以自动把where子句变成
如果将字符串值改为: '7P10%'将不会使索引失效, 达到优化的效果。
2008
2.2.5 SELECT子句中尽量避免使用数字
例如: select 1,jh fromdaa01;
因为ORACLE系统在SQL解析过程中,将数 字转换为所有列名,这个过程需要通过查询数据字 典完成,耗费很多时间。应该在子句中直接将所有 的字段列名写出,这样就是比较优化的做法。
浅谈油田oracle数据库开发中的SQL优化
2008
摘要
大庆油田作为一个大型企业正在向信息化 产业化方向发展, Oracle 数据库的建设和应用 在油田勘探开发的效果评价、效果分析等各个 方面具有重大意义, 尤其是数据库的后台处理非 常重要, 它关系到前台客户对数据库应用的质量 和速度, 特别是以数据库、网络为基础的Web 应用都需要后台数据库的大力支持。本文着重 从实现的角度讨论了我厂大型数据库管理系统 ORACLE 中SQL 语句优化语句时,ORACEL 先将其解析然后将该语句存放在全局区域的 共享池中,并可以被所有的数据库用户共享。 当再次执行一个SQL 语句时,如果它和之前执 行过的语句完全相同, ORACEL 将直接从共 享池中获得被解析的语句。
①计算语句值; ②共享池中有无与此语句字符完全匹配的语句; ③准备要运行的SQL 语句; ④为新语句在共享池中创建空间; ⑤将语句存放在共享池中; ⑥执行准备好的SQL 语句。
2008
结束语
从以上讨论看出同一查询的不同SQL 语句写法会给查 询性能带来显著的差异。以上提到的是一些在软件开发和 数据库管理中最基本的提高SQL语句效率的方法,其中的关 键就是合理的建立并充分利用索引,但是在更多的情况下,往 往需要反复试验比较不同的语句以得到最佳方案。索引使 查询速度得到了很大的提升,但同时索引也占用了额外的硬 盘空间(当然现在一般硬盘空间不成问题),而且往表中插入 新记录时索引也要随着更新,这也需要一定时间。有些表 如果经常insert,而较少select,就不用加索引了。不然每次写 入数据都要重新改写索引,花费时间。
to_number(xqkdm)=5101, 这样就限制了索引的使用,改成以下查询就可以使用索引:
select jh,cyjh,cw,mqjb
from daa01 where xqkdm=’5101’; 特别注意:不匹配的数据类型之间比较会让Oracle自动限 制索引的使用,即便对这个查询执行Explain Plan也不能让您 明白为什么做了一次“全表扫描”。
2008
2.2.6 用where子句替代having 字句
避 免 使 用 HAVING 子 句 , HAVING 只 会 在 检 索 出所有记录之后才对结果集进行过滤。这个处 理需要排序,总计等操作。如果能通过WHERE子 句限制记录的数目,那就能减少这方面的开销, 因此速度较快。