oracle隐式转换 性能,关于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绑定变量隐式转换导致性能问题

年后一次系统升级后,监控数据库的工具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     ...

随机推荐

一步步学习javascript基础篇(0):开篇索引

索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...

Lambda表达式【转】

lambda表达式是对匿名方法的一种改进,具有更加简洁的语法和更易理解的形式,lambda表达式可以包括表达式和语句,并且可以用与创建委托或表达式目录树类型. lambda表达式都使用Lambda运算 ...

poj 3041 Asteroids (二分图的最大匹配 第一题)

题目:http://poj.org/problem?id=3041 题意:在某个n*n的空间内,分布有一些小行星,某人在里面打炮,放一枪后某一行或某一列的行星就都没了,让求最少的打炮数. 然后把每行x ...

3.class文件基本结构

转 http://blog.csdn.net/luanlouis/article/details/39892027 [last updated: 2014/11/19 09:06] 作为Java程序猿 ...

centos 64位编译安装 glibc-2.14

cd /opt wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz tar -xzf glibc-2.14.tar.gz cd glibc-2.14 ...

11 个简单的 Java 性能调优技巧

大多数开发人员理所当然地以为性能优化很复杂,需要大量的经验和知识.好吧,不能说这是完全错误的.优化应用程序以获得最佳性能不是一件容易的事情.但是,这并不意味着如果你不具备这些知识,就不能做任何事情.这 ...

命令“copy /V 已退出,代码为 1

这个错误出现在vs生成事件里的命令行里. 第一种:简单粗暴直接清空命令行 第二种:通过输出的打印结果来分析: 比如我的出现这个原因一般有两种情况: 第一种:是可能我引用的共享盘Z盘无法连接: 第二种: ...

db2删除表中数据

DB2数据库系统建表后,难免会有将表中数据清空的需求,本文将为您介绍DB2数据库中四种数据删除的方法,供您参考,您可以根据实际情况来进行选择,希望能对有所帮助. 1. 使用 DELETE 语句,即: ...

AYUI7 WPF MVC插件欣赏

AYUI7  MVC 提前预览 一个插件安装,享受所有快捷操作 静态图: 支持xaml中aymvc快速绑定多个操作 支持controller中  ayaction快速创建action代码块, 在AYU ...

微信小程序request请求封装

var app = getApp(); function request(url,postData,doSuccess,doFail,doComplete){ var host = getApp(). ...

你可能感兴趣的:(oracle隐式转换,性能)