Oracle数据类型引起的性能问题(已经解决)!

为避免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

Oracle 只允许将 BFILE 绑定为 BFILE 参数。 如果您尝试绑定一个非 BFILE 值(如 byte[]OracleBinary),适用于 Oracle 的 .NET 数据提供程序并不会自动为您构造这样的值。

BLOB

 

Blob

Oracle 只允许将 BLOB 绑定为 BLOB 参数。 如果您尝试绑定一个非 BLOB 值(如 byte[]OracleBinary),适用于 Oracle 的 .NET 数据提供程序并不会自动为您构造这样的值。

CHAR

AnsiStringFixedLength

Char

 

CLOB

 

Clob

Oracle 只允许将 CLOB 绑定为 CLOB 参数。 如果您尝试绑定一个非 CLOB 值(如 System.StringOracleString),适用于 Oracle 的 .NET 数据提供程序并不会自动为您构造这样的值。

DATE

DateTime

DateTime

 

FLOAT

Single、Double、Decimal

Float、Double、Number

Size 确定 System.Data.DBTypeOracleType

INTEGER

SByte、Int16、Int32、Int64、Decimal

SByte、Int16、Int32、Number

Size 确定 System.Data.DBTypeOracleType

INTERVAL YEAR TO MONTH

Int32

IntervalYearToMonth

只有在同时使用 Oracle 9i 客户端和服务器软件时,OracleType 才可用。

INTERVAL DAY TO SECOND

Object

IntervalDayToSecond

只有在同时使用 Oracle 9i 客户端和服务器软件时,OracleType 才可用。

LONG

AnsiString

LongVarChar

 

LONG RAW

Binary

LongRaw

 

NCHAR

StringFixedLength

NChar

 

NCLOB

 

NClob

Oracle 只允许将 NCLOB 绑定为 NCLOB 参数。 如果您尝试绑定一个非 NCLOB 值(如System.StringOracleString),适用于 Oracle 的 NET 数据提供程序并不会自动为您构造这样的值。

NUMBER

VarNumeric

Number

 

NVARCHAR2

String

NVarChar

 

RAW

Binary

Raw

 

REF CURSOR

 

Cursor

有关更多信息,请参见Oracle REF CURSOR

ROWID

AnsiString

Rowid

 

TIMESTAMP

DateTime

Timestamp

只有在同时使用 Oracle 9i 客户端和服务器软件时,OracleType 才可用。

TIMESTAMP WITH LOCAL TIME ZONE

DateTime

TimestampLocal

只有在同时使用 Oracle 9i 客户端和服务器软件时,OracleType 才可用。

TIMESTAMP WITH TIME ZONE

DateTime

TimestampWithTz

只有在同时使用 Oracle 9i 客户端和服务器软件时,OracleType 才可用。

UNSIGNED INTEGER

Byte、UInt16、UInt32、UInt64、Decimal

Byte、UInt16、Uint32、Number

Size 确定 System.Data.DBTypeOracleType

VARCHAR2

AnsiString

VarChar

 

posted @ 2009-10-27 13:06  阿新  阅读(4648)  评论(8编辑  收藏  举报