关于ORACLE隐式转换后性能问题
SELECT TM.MONEY_CODE FROM T_CONTRACT_MASTER T,T_MONEY TM WHERE T.MONEY_ID = TM.MONEY_ID AND T.POLICY_CODE = ?
问题出现:
今儿生产代码性能扫描这段脚本被揪出来了,原因是这玩意儿执行时间过长,把后面的代码兄弟都给堵住了,然后发现这家伙在做全表扫,一
开始纳闷,这不对啊,T.POLICY_CODE上面明明白白的建这索引呢,咋就能全表扫呢,既然会全表扫导致性能下降,那为什么开发环境没有
发现问题呢?然后,猛的一拍脑袋,乖乖,完了开发数据库跟生产库完全不是一个数量级,虽说有时候数据分布会影响Oracle的执行计划,不
过我觉得还是先去看看开发库的执行计划是不是跟生产一样,好消息是,结果完全一致,我是说执行计划完全一致,坏消息是,开发库量小,
看不出问题,生产库就不妙了,看着像是要执行几百年才能执行完成的节奏啊。
解决方案:
定位问题,为什么建立了索引但是为什么没有走索引?这里关键的一点其实我没有有说明,POLICY_CODE这玩意儿是varchar2类
型,而传入参数却是number,那么问题来了,碰到这种情况Oracle会做隐式转换,规则是左边转成右边或者右边转成左边又或者左边右边
一起转巴拉巴拉,结果是执行没有问题,但是索引就不走了。
所以呢,为了走索引,就得避免Oracle发生隐式转换,就得保持数据类型一直,在所以呢,以后如果碰到明明是number类型的数据确
被放在vachar2类型的字段上,请在查询的时候加上引号。
SELECT TM.MONEY_CODE FROM T_CONTRACT_MASTER T,T_MONEY TM WHERE T.MONEY_ID = TM.MONEY_ID AND T.POLICY_CODE = ‘123456’
好了,咱得去处理生产问题了,哎,晚上又得加班上生产。。。所以说,小伙子,做事得仔细!
关于ORACLE隐式转换后性能问题的更多相关文章
- ORACLE绑定变量隐式转换导致性能问题
年后一次系统升级后,监控数据库的工具DPA发现数据库的Total Wait时间突然飙增,如下截图所示,数据库的总体等待时间对比升级前飙增了非常多 另外就是发现出现了较多的等待事件,主要有latch: ...
- SQL Server中提前找到隐式转换提升性能的办法
http://www.cnblogs.com/shanksgao/p/4254942.html 高兄这篇文章很好的谈论了由于数据隐式转换造成执行计划不准确,从而造成了死锁.那如果在事情出现之前 ...
- Scala学习教程笔记三之函数式编程、集合操作、模式匹配、类型参数、隐式转换、Actor、
1:Scala和Java的对比: 1.1:Scala中的函数是Java中完全没有的概念.因为Java是完全面向对象的编程语言,没有任何面向过程编程语言的特性,因此Java中的一等公民是类和对象,而且只 ...
- Scala入门系列(十二):隐式转换
引言 Scala提供的隐式转换和隐式参数功能,是非常有特色的功能.是Java等编程语言所没有的功能.它可以允许你手动指定,将某种类型的对象转换成其他类型的对象.通过这些功能可以实现非常强大而且特殊的功 ...
- DB性能-隐式转换
1 什么是隐式转换 当源数据的类型和目标数据的类型不同的时候,如果没有转换函数,就会发生隐式转换,也称自动转换.当然, 有些情况下有些类型是不可以发生转换的,比如说从DATE类型转换到N ...
- ORACLE数据库中执行计划出现INTERNAL_FUNCTION一定是隐式转换吗?
ORACLE数据库中,我们会使用一些SQL语句找出存在隐式转换的问题SQL,其中网上流传的一个SQL语句如下,查询V$SQL_PLAN的字段FILTER_PREDICATES中是否存在INTERNAL ...
- MySQL性能优化:MySQL中的隐式转换造成的索引失效
数据库优化是一个任重而道远的任务,想要做优化必须深入理解数据库的各种特性.在开发过程中我们经常会遇到一些原因很简单但造成的后果却很严重的疑难杂症,这类问题往往还不容易定位,排查费时费力最后发现是一个很 ...
- Oracle数据类型隐式转换小析
测试使用环境:oracle 11g r1 平常写sql语句时,大大咧咧,不太注意和数字有关的数据类型,有时例如 where c1=111 和 where c1='111'这样混用,却不曾想这里面另有蹊 ...
- oracle数据类型及其隐式转换
oracle有三种最基本的数据类型,即字符型.数值型.日期型. oracle提供的单行函数中,针对不同的数据类型,提供大量实用的函数,同时提供一系列数据类型转换函数,如下: 1)to_char ...
随机推荐
- HDU3874 /HDU3333 树状数组 区间求不重复数和
Necklace Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total S ...
- background-size扫盲
contain,按比例调整背景图片,使得其图片宽高比自适应整个元素的背景区域的宽高比,因此假如指定的图片尺寸过大,而背景区域的整体宽高不能恰好包含背景图片的话,那么其背景某些区域可能会有空白. cov ...
- TypeError: 'stepUp' called on an object that does not implement interface HTMLInputElement.
我今天写程序的时候遇到的问题,开始完成功能后没发觉.当再次部署程序更新时候,出的错误,通过firebug发现提示是TypeError: 'stepUp' called on an object tha ...
- C# Image 、 byte[] 、Bitmap之间的转化
一.Byte[] 转 System.Drawing.Bitmap public static Bitmap CreateBitmap(byte[] originalImageData, int ori ...
- Maven-005-部署构件至 nexus 私服
nexus 私服仓库中宿主仓库主要用于储存装置内部的或一些无法从公共仓库获取的第三方构件,供项目组的人员使用.日常开发中,可将各版本构件直接部署到 Nexus 中对应策略的宿主仓库中.上篇文章中讲述了 ...
- 从零开始的Android新项目1 - 架构搭建篇
记录一下新项目的搭建. 试想一下,如果没有历史负担,没有KPI压力,去新搭建一个项目,你会怎么设计和实现呢? 本系列文章不是教你怎么从0开始学Android,从0开始怎么建一个项目,而定位于零负担的情 ...
- php +html5 websocket 聊天室
针对内容比较长出错,修改后的解码函数 和 加码函数 原文请看上一篇 http://yixun.yxsss.com/yw3104.html function uncode($str,$key){ $ma ...
- 创建XMLHttpRequest对象方法
~~~ //创建XMLHttpRequest对象 function creatXmlHttpRequest() { var xmlHttp; try{ //非IE浏览器使用 xmlHttp = new ...
- 在LaTeX文档中插入图片的几种常用的方法
LaTeX中一般只直接支持插入eps(Encapsulated PostScript)格式的图形文件, 因此在图片插入latex文档之前应先设法得到图片的eps格式的文件. 在LaTeX文档中插入图片 ...
- Dijkstar算法的数学原理
Dijkstar算法是荷兰数学家迪克斯屈拉(or迪杰斯特拉?)在1959年发现的一个算法.是现有的几个求带权图中两个顶点之间最短通路的算法之一.算是一个相当经典的算法了. 迪克斯屈拉算法应用于无向连通 ...