• 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

  • 相关阅读:
    A.2.1 定义函数输出|返回3个整数的和,平均值
    android 支持不同的设备 .
    Android 中的Theme和Style使用
    Android TabHost的使用(Tab为Layout)
    [转]Android高手进阶教程(五)之Android 中LayoutInflater的使用!
    Android的Handler使用
    Android中级教程之Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)! .
    java实现文件单词频率统计
    安装Tomcat服务器
    Android中BroadcastReceiver使用总结
  • 原文地址:https://www.cnblogs.com/neozhu/p/1590592.html
Copyright © 2020-2023  润新知