0

我在具有以下架构的表中插入了许多行:

TABLE "SPACE"."WORKTABLE" 
   (    "ID" NUMBER, 
    "AUTHOR" VARCHAR2(20 BYTE), 
    "INSERTION_DATE" DATE, 
    "XML_DOCUMENT" "SYS"."XMLTYPE" 
   )

插入是使用 ADO.NET ( OracleXmlType) 完成的。第一个插入的行需要两分钟以上才能完成;但是在插入完成后,以下所有操作所花费的时间都比第一个要少得多。

  1. 为什么会这样?
  2. 这仅与插入 XML 时所做的 XML 解析有关吗?为什么(如果是)它只发生在第一次插入时?
  3. 这个时间可以缩短吗?

(如果可能,请记录您的答案)

更新:正在执行的代码是最多 10 行的简单插入,其 XML 长度为 5500 个字符。此外,我已经消除了打开连接所花费的时间作为延迟的原因。

string sql = "INSERT INTO WORKTABLE VALUES ( " + rowID + ",'JBALVIN',1,'01-JAN-12',:xmldocument)";
using (OracleCommand comm = new OracleCommand(sql, con))
{
    comm.Parameters.Add(":xmldocument", OracleDbType.XmlType);
    OracleXmlType xmlType = new OracleXmlType(con, entidadXML);
    comm.Parameters[0].Value = xmlType;
    comm.ExecuteNonQuery();
}

更新:

我们注意到导致延迟的线路是OracleXmlType xmlType = new OracleXmlType(con, entidadXML);。是否可以通过停止 Oracle 检查 XML 有效性来解决?如果是这样……怎么办?通过使用连接的直接命令?

4

1 回答 1

0

嗯……经过一番猜测和谷歌搜索,我发现如果删除了 XML 上使用的架构的 URL(属性xmlns:xsixsi:noNamespaceSchemaLocation),则插入是以毫秒为单位完成的。遗憾的是,Oracle OracleXmlType 文档中没有记录这种行为。

于 2013-02-04T15:09:30.570 回答