首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle数据类型引起的性能问题(已经解决)!

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

作者头像
阿新
发布2018-04-12 14:31:38
1.3K0
发布2018-04-12 14:31:38
举报
文章被收录于专栏:c#开发者c#开发者

为避免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.String 或 OracleString),适用于 Oracle 的 .NET 数据提供程序并不会自动为您构造这样的值。

DATE

DateTime

DateTime

FLOAT

Single、Double、Decimal

Float、Double、Number

Size 确定 System.Data.DBType 和 OracleType。

INTEGER

SByte、Int16、Int32、Int64、Decimal

SByte、Int16、Int32、Number

Size 确定 System.Data.DBType 和 OracleType。

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.String 或 OracleString),适用于 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.DBType 和 OracleType。

VARCHAR2

AnsiString

VarChar

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2009-10-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档