我在具有以下架构的表中插入了许多行:
TABLE "SPACE"."WORKTABLE"
( "ID" NUMBER,
"AUTHOR" VARCHAR2(20 BYTE),
"INSERTION_DATE" DATE,
"XML_DOCUMENT" "SYS"."XMLTYPE"
)
使用ADO.NET(OracleXmlType
)完成插入。
第一个插入的行需要两分多钟才能完成;但在完成此插入后,以下所有内容所花费的时间远远少于第一次。
(如果可能,请记录您的答案)
更新: 正在执行的代码是一个简单的插入,最多包含10行,长度为5500字符的XML。此外,我已经把连接打开所花费的时间作为延迟的原因。
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有效性来解决吗?如果是这样......怎么办?通过使用连接的直接命令?
答案 0 :(得分:0)
嗯...经过一些猜测和谷歌搜索后,我发现如果删除了XML上使用的架构的URL(属性xmlns:xsi
和xsi:noNamespaceSchemaLocation
),则按顺序完成插入毫秒。遗憾的是,Oracle OracleXmlType documentation没有记录这种行为。