学院首页 软件应用 编程开发 创意设计 认证培训 软件论坛
ASP ASP.NET PHP JSP SQL MYSQL Java VB

您的位置:学院 >> 编程开发 >> Oracle >> 有关Oracle Index 的三个问题(三)


有关Oracle Index 的三个问题(三)


第三讲、索引再好,不用也是白搭

抛开前面所说的,假设你设置了一个非常好的索引,任何傻瓜都知道应该使用它,但是Oracle却偏偏不用,那么,需要做的第一件事情,是审视你的sql语句。

Oracle要使用一个索引,有一些最基本的条件:

1 ,where 子句中的这个字段,必须是复合索引的第一个字段;

2 ,where 子句中的这个字段,不应该参与任何形式的计算

具体来讲,假设一个索引是按f1, f2, f3的次序建立的,现在有一个sql 语句 , where 子句是f2 = : var2, 则因为f2不是索引的第1个字段,无法使用该索引。

第2个问题,则在我们之中非常严重。以下是从实际系统上面抓到的几个例子:

Select jobid from mytabs where isReq='0' and to_date (updatedate) >= to_Date ( '2001-7-18', 'YYYY-MM-DD')

以上的例子能很容易地进行改进。请注意这样的语句每天都在我们的系统中运行,消耗我们有限的cpu和内存资源。

除了1 ,2 这两个我们必须牢记于心的原则外,还应尽量熟悉各种操作符对Oracle 是否使用索引的影响。这里我只讲哪些操作或者操作符会显式(explicitly)地阻止Oracle 使用索引。以下是一些基本规则:

1 ,如果f1和f2是同一个表的两个字段,则f1>f2, f1>=f2, f1

2 ,f1 is null, f1 is not null, f1 not in, f1 !=, f1 like ‘ %pattern% ' ;

3 ,Not exist

4 ,某些情况下,f1 in也会不用索引;

对于这些操作,别无办法,只有尽量避免。比如,如果发现你的sql中的in操作没有使用索引,也许可以将in操作改成 比较操作+ union all 。笔者在实践中发现很多时候这很有效。

但是,Oracle 是否真正使用索引,使用索引是否真正有效,还是必须进行实地的测验。合理的做法是,对所写的复杂的sql, 在将它写入应用程序之前,先在产品数据库上做一次explain . explain 会获得Oracle 对该ql 的解析( plan ) , 可以明确地看到Oracle 是如何优化该sql 的。

如果经常做explain, 就会发现,喜爱写复杂的sql 并不是个好习惯,因为过分复杂的sql 其解析计划往往不尽如人意。事实上,将复杂的sql 拆开,有时候会极大地提高效率,因为能获得很好的优化。当然这已经是题外话了。

技术文章快速查找

栏目导航
软件应用
·操作系统 ·杀毒防黑 ·应用软件
·聊天软件 ·网络软件  
Web开发
·ASP ·JavaScript ·CGI
·JSP ·VbScript ·Web服务器
·PHP ·XML  
开发语言
·VB ·VC ·ASP.NET
·Java ·C/C++ ·Delphi
数据库开发
·MySQL ·SQL/Access ·PowerBuilder
·Oracle ·DB2  
网站设计
·Flash ·Dreamweaver ·HTML/CSS
·Fireworks ·FrontPage  
平面设计
·Photoshop ·CorelDraw ·AutoCAD
·FreeHand ·Illustrator ·3DsMAX
媒体动画
·Director ·Authorware ·Maya
·视频处理    


相关软件 产品库推荐
·笔记本 ·台式机 ·服务器
·数码相机 ·手机 ·GPS
·DV摄像机 ·MP3 ·MP4
·CPU ·硬盘 ·内存
·主板 ·显卡 ·显示器
·打印机 ·投影机 ·路由器

还没人留言,抢个先,哈哈!
对"有关Oracle Index 的三个问题(三)"的评论 - 快速回贴
内容:
  [完成后可按Ctrl+Enter发布]

百度中 有关Oracle Index 的三个问题(三) 相关内容
Google搜索中 有关Oracle Index 的三个问题(三) 相关内容
雅虎中 有关Oracle Index 的三个问题(三) 相关内容
Sogou搜索中 有关Oracle Index 的三个问题(三) 相关内容

相关软件 最新回复帖子:

·Windows Vista 中卸载软件的不同方式
·没有mysql支持时的替代方案
·一个可以发送附件及HTML格式邮件的PHP类
·AutoCAD打造精致三维鸟笼实例详解
·Photoshop自定义水晶字特效样式
·AutoCAD三维基础实例教程
·PS为黑背景长发美女照片抠图换背
·用Photoshop自制个性摩托车贴花小经验
·轻松几步将美女照片处理为手工素描
·巧用Photoshop画笔轻松绘制创意特效


  相关软件 有关Oracle Index 的三个问题(三)相关文章
教你学会如何处理数据库中的NULL Oracle中使用自治事务保存日志表条目
有关Oracle数据库10g中的分区功能 详细介绍:Oracle 9i的各技术特征(1)
Oracle数据库备份与恢复的三种方法 在Oracle的网络结构中解决连接问题
简单介绍有关Oracle数据库备份技巧 ASP.NET 2.0实现依赖Oracle的缓存策略
基于Oracle ADF的应用程序开发过程 有关 Oracle 的架构的基础知识简介
ORACLE学习笔记之调节性能优化篇 教你如何来恢复一个丢失的数据文件
Oracle数据库基本知识及问题解决 如何应对ORACLE数据库的部分面试题目
Oracle数据库的安全策略分析(一) Oracle的TNS-12502错误原因及解决
Oracle 9i 数据库WITH查询语法小议 有关Oracle Index 的三个问题(二)
ORACLE与SQL SERVER语言比较(一) 有关Oracle Index 的三个问题(一)