当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
Oracle数据类型引起的性能问题
发布时间:2011/4/14 9:45:51 来源:城市学习网 编辑:ziteng

  为避免SQL-注入,所有的update,insert,delete,select全部使用带参数的形式编写

  Update TableName Set FiledName=:Fd1 where Id=:Id

  ID Oracle类型是 Varchar2对应DbType.String

  问题来了,由于类型映射不匹配,导致在执行SQL时Oracle会自动转换类型,这样直接导致无法使用到索引(全部全表扫描),所以update,delete时效率特别差

  后修改代码

  ID Oracle类型是 Varchar2对应DbType.AnsiString

  问题解决了,可以用使用到索引。

Oracle 数据类型 要绑定为参数的 DbType 枚举 要绑定为参数的 OracleType 枚举

BFILE

BFile

BLOB

Blob

CHAR

AnsiStringFixedLength

Char

CLOB

Clob

DATE

DateTime

DateTime

FLOAT

Single、Double、Decimal

Float、Double、Number

INTEGER

SByte、Int16、Int32、Int64、Decimal

SByte、Int16、Int32、Number

INTERVAL YEAR TO MONTH

Int32

IntervalYearToMonth

INTERVAL DAY TO SECOND

Object

IntervalDayToSecond

LONG

AnsiString

LongVarChar

LONG RAW

Binary

LongRaw

NCHAR

StringFixedLength

NChar

NCLOB

NClob

NUMBER

VarNumeric

Number

NVARCHAR2

String

NVarChar

RAW

Binary

Raw

REF CURSOR

Cursor

ROWID

AnsiString

Rowid

TIMESTAMP

DateTime

Timestamp

TIMESTAMP WITH LOCAL TIME ZONE

DateTime

TimestampLocal

TIMESTAMP WITH TIME ZONE

DateTime

TimestampWithTz

UNSIGNED INTEGER

Byte、UInt16、UInt32、UInt64、Decimal

Byte、UInt16、Uint32、Number

VARCHAR2

AnsiString

VarChar

  OracleParameter 对象的 Value 属性使用的 InputOutput、Output 和 ReturnValue ParameterDirection 值是 .NET Framework 数据类型,除非输入值是 Oracle 数据类型(例如 OracleNumber 或 OracleString)。这并不适用于 REF CURSOR、BFILE 或 LOB 数据类型。

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15080520号-20
珠峰网 版权所有 All Rights Reserved