Oracle的Index-3(转)

Oracle的Index-3[@more@]

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

抛开前面所说的,假设你设置了一个非常好的索引,任何傻瓜都知道应该使用它,但是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 对该 sql 的解析(plan),可以明确地看到 Oracle 是如何优化该 sql 的。
如果经常做 explain, 就会发现,喜爱写复杂的 sql 并不是个好习惯,因为过分复杂的sql 其解析计划往往不尽如人意。事实上,将复杂的 sql 拆开,有时候会极大地提高效率,因为能获得很好的优化。当然这已经是题外话了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9417382/viewspace-932300/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9417382/viewspace-932300/

【WRF-Chem Emissions教程第一期】WRF-Chem 排放概述 WRF-Chem 排放概述 阅读详情

相关推荐

HyperLPR3车牌识别-Android-SDK光速部署与使用

基于深度学习高性能中文车牌识别 High Performance Chinese License Plate Recognition Framework.快速部署AndroidSDK

tunm 6119

index(3)索引大小估算

对于一些大表创建索引,可以使用dbms_space.create_index_cost对索引占用的空间进行提前估算 SQL> exec dbms_stats.gather_table_stats(user,'T1227'); PL/SQL procedure successfully completed. SQL> variable used_bytes number SQL&gt...

m0_37407903的博客 1164

STM32+CubeMX实战:5步搞定LWIP HTTP服务器搭建(附常见编译错误解决)

本文详细介绍了基于STM32和CubeMX平台,快速搭建LWIP HTTP服务器的5步实战指南。内容涵盖从项目初始化、LWIP深度配置到解决经典的`HTTPD_FSDATA_FILE`编译错误,并分享了使用VSCode进行高效开发的工作流,旨在帮助嵌入式开发者快速实现网络功能并规避常见陷阱。

weixin_29192365的博客 573

Index 3 requested, with a size of 3

 使用Cursor时出现了  Index 3 requested, with a size of 3 的报错,当时使用的写法如下: if (c.moveToFirst()) { for (int i = 0; i < c.getCount(); i++) { c.move(i); ...

靡不有初 鲜克有终 1224

Unity学习笔记之【IK反向动力学操作】

反向动力学,简称IK。相较于正向动力学,反向动力学旨在子级对父级产生的影响。使用IK,可以实现根据目标位置或方向来计算并调整角色的关节(骨骼)链,以使角色的末端(如手臂、腿部等)达到预期的位置或取向。通过使用 Unity 的 IK 功能,你可以实现各种复杂的角色动画效果,如角色抓取、足部对齐、手臂跟随等。 2. 将所视的目标物体拖拽绑定 4. 实现效果如下 :移动角色时注释立方体 实现效果如下

m0_47351846的博客 2954

计组实验之四路表决器

请在之前四路表决器电路实现的基础上,继续用连接线 联接CD4511,将投票为1的票数总和显示到一个 LED上,思考如何做?由于我们需要通过显示字形来直接看出有几个1,在这里,我们最多有四个1,即显示字形最多到4就行,所以我们需要将有几个1用2进制数来表示,下面给出了相关电路图。显示输入插口,按真值表(自拟)要求,逐次改变输入变量, 测量相应的输出值,验证逻辑功能, 与表3-1 进行比较, 验证所设计的逻辑电路是否符合要求。用实验结果与真值表3-1和3-2进行比对,可以得出,我们实验结果是正确的。

szyugly的博客 1万+

第三讲:index3控制指令.html

控制指令             AngularJS的指令             指示,命令:指挥示意要做一件事情!        指令:就是扩展了HTML的基本功能,通过额外的标签、属性来增强HTML功能        Angular的指令在页面中体现出来就是一个标签\属性\class名称\注释等等        常见指令,按照指令的功能,划分为五大类        1

qq_35363709的博客 1959

Zigbee开发环境搭建:从驱动安装到程序烧录全指南

本文提供了一份详尽的Zigbee开发环境搭建全指南,涵盖从驱动安装到程序烧录的完整流程。重点介绍了使用SmartRF Flash Programmer和仿真器进行程序下载的关键步骤,并详细说明了USB转串口驱动的配置方法,帮助开发者快速构建稳定的Zigbee开发基础。

weixin_29195217的博客 394

index3

Title                 *{             margin: 0;             padding: 0;         }         table{             border-collapse: collapse;         }         th{             width: 200px;   

Mynamezhuang的博客 685

JeecgBoot passwordChange 任意用户密码重置漏洞复现

​JeecgBoot 框架passwordChange接口存在任意用户密码重置漏洞,未经身份验证的远程攻击者可以利用此漏洞重置管理员账户密码,从而接管系统后台,造成信息泄露,导致系统处于极不安全的状态。

0xSec 2641

Python 爬虫实战:全球渔业船舶捕捞记录数据采集与分析全攻略

通过本项目,我们实现了对全球渔业船舶捕捞记录数据的采集、处理和可视化,为渔业资源管理和海洋生态保护提供了数据支持。未来,可以进一步结合机器学习和深度学习技术,对捕捞行为进行预测和分类,提高对非法捕捞活动的识别能力。

2201_76125261的博客 557

Oracle的Index-3(转)

Oracle的Index-3(转) --&gtRounders | 06 八月, 2007 17:33Oracle的Index-3三讲,索引再好,不用也是白搭 抛开前面所说的,假设你设置了一个非常好的索引,任何傻瓜都知道...

congli3478的博客 244

11.Labview实现用户界面切换的几种方式---通过VI间相互调用

本文介绍了界面切换的几种方式,分别是重入和引用①重入方式可以通过调用子VI的方式打开被调用的界面,往往应用于弹窗等的设置程序。②引用方式分两种,一种是打开引用,一种是静态引用。区别在于打开引用需要设置被打开VI的目标地址,静态引用仅需在引用时绑定VI的位置即可。③推荐使用静态引用的方式切换界面。④使用引用打开界面时,需通过属性节点和调用节点来设置程序的状态。更多内容欢迎大家补充和留言讨论~本文介绍了GUI界面设计相关的程序,更多相关文章后续持续更新,请关注作者不迷路~本期就到这里,再见~

关注我,更多技术问题欢迎私聊~ 9544

Oracle 中的 unique index 和 non unique index的区别

今天做Schema评审的时候发现一个很奇怪的现象,也许是用工具生成的SQL语句,清一色的如下: CREATE TABLE table_name ( id NUMBER NOT NULL, ...... ...... ) ; CREATE INDEX table_name_PK ON table_name(ID) ; ALTER T...

killkill 6226

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

深入理解Oracle索引(1):INDEX SKIP SCAN 和 INDEX RANGE SCAN

㈠ Index SKIP SCAN              当表有一个复合索引,而在查询中有除了索引中第一列的其他列作为条件,并且优化器模式为CBO,这时候查询计划就有可能使用到SS       Skip scan会探测出索引前导列的唯一值个数,每个唯一值都会作为常规扫描的入口,在此基础上做一次查找,最后合并这些查询       例如:表employees (sex, employee_id,

记录创业路上的一些想法 3万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

oracle加索引 oracle,Oracle之索引(Index)实例讲解 - 基础

Oracle索引(Index)是关系数据库中用于存放表中每一条记录位置的一种对象,主要目的是加快数据的读取速度和数据的完整性检查。索引的建立是一项技术性要求非常高的工作。一般在数据库设计阶段就要考虑到如何设计和创建索引。1. 创建索引创建索引的语法:CREATE [UNIQUE] INDEX [schema.] indexON [schema.] table (column [ASC | DESC...

weixin_36362326的博客 2400

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

oracle中alter index,oracle alter index rebuild online和alter index rebuild的區別

本文用10046事件來解析alter index rebuild與alter index rebuild online的區別alter index rebuild online實質上是掃描表而不是掃描現有的索引塊來實現索引的重建alter index rebuild 只掃描現有的索引塊來實現索引的重建。我們可以用10046事件來發現這個現象。一 先看alter index rebuild:SQL&...

weixin_30411455的博客 998

oracle index range scan,深入理解Oracle索引(1):INDEX SKIP SCAN 和 INDEX RANGE SCAN | 學步園...

㈠ Index SKIP SCAN當表有一個複合索引,而在查詢中有除了索引中第一列的其他列作為條件,並且優化器模式為CBO,這時候查詢計劃就有可能使用到SSSkip scan會探測出索引前導列的唯一值個數,每個唯一值都會作為常規掃描的入口,在此基礎上做一次查找,最後合併這些查詢例如:表employees (sex, employee_id, address) ,有一個組合索引(sex, emplo...

weixin_34961316的博客 897

[Index]Index Scan

Index B-TreeIndex的叶节点指向RowID,然后根据RowID再找对应的Block语法:CREATE INDEX NAME_SALARY_IDX ON PERSON(LAST_NAME ASC,SALARY DESC);Index Unique Scan对于unique index来说,如果where条件后面是=,那么就会执行index unique scan。AskTom:well

田攀的日志 3158

oracle hint_no_index

oracle hint系列9no_index1,如果指定了表中一个索引,表中其它索引仍可选用2,如果指定了表中所有的索引,不会使用表中所有的索引3,如果未指定索引,不会使用表中所有的索引,即会走此表的全表扫描...

1471

oracle判断index是否存在,判断oracle index 何时需要重建

oracle 索引何时需要重建1.analyze index PUB_USER_FUNC_RESOURCE_INDEX3 validate structure;2. 查询索引碎片:select name,del_lf_rows,lf_rows,round((del_lf_rows/(lf_rows+0.0000000001))*100) frag_pctfrom index_stats一般如果该索...

weixin_35123329的博客 893

oracle中的index函数,index函数_excel中index函数的方法

Excel中经常需要使用到index函数,index函数具体该如何使用呢?下面是由学习啦小编分享的excel中index函数的方法,以供大家阅读和学习。excel中index函数的方法:index函数使用步骤1:下面用2个例子来说明数组形式和引用形式用法。index函数使用步骤2:首先介绍数组形式的使用方法index函数使用步骤3:举例1:在H2单元格中返回数组(D2:F11)中第3行、第3列的值...

weixin_42312523的博客 1779

bitmap索引 MySQL,Oracle Bitmap Index

ORACLE的bitmap索引,我们用的很少。在我们的常理认识当中,我们用的最多就是类似性别,类型这种属性的字段,因为他们字段的种类Oracle的bitmap索引,我们用的很少。在我们的常理认识当中,我们用的最多就是类似性别,类型这种属性的字段,因为他们字段的种类很少。其实 BITMAP还是有很多优势以及一些特性的。首先在传统的INDEX里,我们在索引的存储上,一般是分为:header+index...

weixin_33479657的博客 259

oracle 表combine,oracle index --and_equal與INDEX_COMBINE與index_join

在我自己的實驗結果中,DB計算的cost全表竟然比標題中任何一種index join方法都要低很多倍,但實際執行速度卻要慢很多倍,當然這裡沒有考慮數據傾斜等因素因此,我找到自己問題的答案------為什麼在一個語句的表中,明明有多個索引可以同時使用(join),增加效率及篩選,而oracle卻只能使用其中一個索引,這是因為oracle執行路徑的cost作怪,這時用hit可以明顯提高執行效率10g中...

weixin_42547431的博客 356

(转)ORACLE BITMAP INDEX

ORACLE的bitmap索引,我们用的很少。在我们的常理认识当中,我们用的最多就是类似性别,类型这种属性的字段,因为他们字段的种类很少。其实 BITMAP还是有很多优势以及一些特性的。 首先在传统的INDEX里,我...

cuihuang1302的博客 186

mysql的index转oracle_MySQL转数据到Oracle

一、首先從網絡上找到一些資料如下:1. 自动增长的数据类型处理MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。Oracle没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1 START WITH 1 MAXVALUE 999...

weixin_39631344的博客 166
上一篇: Oracle的Index-1(转)
下一篇: Oracle的Index-2(转)
congwan5321
博客等级 码龄11年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值