zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Qt BarChart实践
    Qt Charts_Audio实践
    Qt 报错LINK2019:无法解析的外部符号
    Qt Charts实践
    Qt Qwdget 汽车仪表知识点拆解8 淡入效果
    因果图法设计测试用例
    Jsoup获取部分页面数据失败 Unhandled content type. Must be text/*, application/xml, or application/xhtml+xml
    loadrunner入门篇
    如何对jmeter设置IP欺骗
    jmeter录制移动端脚本
  • 原文地址:https://www.cnblogs.com/neozhu/p/1590592.html
Copyright © 2011-2022 走看看