我在具有以下架构的表中插入了许多行:
TABLE "SPACE"."WORKTABLE"
( "ID" NUMBER,
"AUTHOR" VARCHAR2(20 BYTE),
"INSERTION_DATE" DATE,
"XML_DOCUMENT" "SYS"."XMLTYPE"
)
插入是使用 ADO.NET ( OracleXmlType
) 完成的。第一个插入的行需要两分钟以上才能完成;但是在插入完成后,以下所有操作所花费的时间都比第一个要少得多。
- 为什么会这样?
- 这仅与插入 XML 时所做的 XML 解析有关吗?为什么(如果是)它只发生在第一次插入时?
- 这个时间可以缩短吗?
(如果可能,请记录您的答案)
更新:正在执行的代码是最多 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 有效性来解决?如果是这样……怎么办?通过使用连接的直接命令?