说说Oracle Bind Graduation(上)
绑定变量是我们目前开发系统应用中广泛使用的数据库SQL语言技术。大多数情况下,我们借助绑定变量可以有效的提高shared cursor使用的效率,减少SQL硬解析的出现。 在Oracle经典著作《Troubleshooting ...
SQL语句为什么不会共享(下)
最后,作为本系列的最后实验,我们一起来看看优化器模式和nls系列参数对SQL共享的影响。 7、Optimizer_Mode优化器模式影响 Optimizer_Mode是一个决定Oracle生成执行计划目标的重要参数...
SQL语句为什么不会共享(中)
前篇(http://space.itpub.net/17203031/viewspace-703624)中我们介绍了SQL父子游标机制和两种SQL不共享的情形。本篇中我们继续介绍由于对象不一致和cursor_sharing等因素带来的SQL不共享的问题。 5...
SQL语句为什么不会共享(上)
SQL语句是一种描述性的语言。Oracle接受一个SQL之后,要进行一系列的解析parse操作,最终生成真正操作的步骤——执行计划。Oracle对一个SQL进行第一次硬解析(hard parse)之后,就将执行计划缓存在SGA的libr...
组合索引顺序选取一例
组合索引在应对特殊的多条件查询是,可以起到意想不到的效果。我们经常在网络上讨论组合索引顺序选取的原则。 江湖流传原则多种多样,有建议使用选择率大小判断的,有建议查看分布的,更有追求多需求...
函数索引的使用细节——常数表达式
在笔者之前的Blog中,已经多次对函数索引Functional Index进行介绍。其中包括函数索引的原理、使用和应用场景。针对两个使用细节,补充一下这个知识点。 SQL语句是一种描述性语言,我们只需要...
说说函数索引
我们进行数据库检索优化的方法,通常是对特定条件列加索引,减少由于全表扫描带来的逻辑物理IO消耗。索引的种类很多,我们经常使用的B*树索引,由于结构简单、适应性强,可以应对大多数数据访问优化需求。除B*树索引...
索引优化执行路径两例
随着CBO时代的到来,Oracle优化器越来越智能,生成的执行计划也是越来越巧妙。一些与传统方式路径用法,在新引入的执行计划中得到了体现。 索引Index的引入目的就是提高数据检索速度,减少逻辑...
索引失效系列——索引本身不可用导致的失效
索引是我们进行优化的一种重要方式。实际工作中,一个简单的索引,可能就会大大提升提高关键业务作业效率,最终提升用户满意度。在CBO时代,DBA和开发人员经常为索引为什么不出现在执行计划中而困惑。 ...
索引失效系列——统计量过期引起执行计划错误
索引是我们进行优化的一种重要方式。实际工作中,一个简单的索引,可能就会大大提升提高关键业务作业效率,最终提升用户满意度。在CBO时代,DBA和开发人员经常为索引为什么不出现在执行计划中而困惑。 ...
索引失效系列——绑定变量引起的peeking
索引是我们进行优化的一种重要方式。实际工作中,一个简单的索引,可能就会大大提升提高关键业务作业效率,最终提升用户满意度。在CBO时代,DBA和开发人员经常为索引为什么不出现在执行计划中而困惑。 ...
索引失效系列——说说is null
索引是我们进行优化的一种重要方式。实际工作中,一个简单的索引,可能就会大大提升提高关键业务作业效率,最终提升用户满意度。在CBO时代,DBA和开发人员经常为索引为什么不出现在执行计划中而困惑。 ...
索引失效系列——隐式类型转换
索引是我们进行优化的一种重要方式。实际工作中,一个简单的索引,可能就会大大提升提高关键业务作业效率,最终提升用户满意度。在CBO时代,DBA和开发人员经常为索引为什么不出现在执行计划中而困惑。 ...
借助索引+非空优化distinct操作一例
一个同事在做方案的时候,问我一个问题:如何快速从百万行的数据表中,快速获取到指定列的所有取定值。 这个问题的困难点在于对数据表数据列的扫描。最直接的方法无过于进行全表扫描+distinct...
复合索引顺序选择问题(二)
下面我们转换一种构建策略,使用高选择性列为前导列 构建方案2——高选择性列为前导列 构建索引 SQL> drop index idx_t_cmp1; Index dropped SQL> create ...
复合索引顺序选择问题(一)
索引是我们经常选择的数据表检索优化方案之一。其中,复合索引是我们经常选择的策略。那么,构建索引列的顺序上,有何种差异和需要注意的方面呢?下面我们通过实验来进行说明。 实验环境说明 ...
语系排序nls_sort与语系索引Linguistic Index
多语言、语系数据的保存满足了多种语系系统的需求。在之前的《nls_sort与汉字排序》(http://space.itpub.net/17203031/viewspace-690198)中,我们介绍了如何在Oracle中通过初始化参数,来控制不同语言类型...
海量数据表删除方案
声明:本文思路参考了hrb_qiuyb老师的文章《如何有效删除一张大表》http://space.itpub.net/9134/viewspace-166488,特此感谢。 当我们的系统进入海量数据时代后,很多过去看起来轻松简单的事...
逆置与Like匹配
声明:本文受《DBA日记》启发而成。 Like匹配是SQL语句的一种重要功能。Like结合通配符使用可以实现模糊查询,解决字符串匹配问题。当查询的数据集合比较大的时候,我们常常希望借助索引来加快检索效率。&nb...
数据列not null对索引影响一例
一些容易忽视的因素,往往是我们进行优化的方向。 Oracle数据列是有not null属性的,标志该列是否允许出现空值。如果插入、修改出现空值的情况,Oracle会拒绝当前的DML操作。 本质上看,数据列的not n...