我有以下查询,它使用 cfspreadsheet 从读取的数据中更新引用数据的表。(大约 600 行)并被称为 qry1。SQL 运行大约需要 2 分钟才能完成。我可以改进 SQL 以改进更新时间吗?products 表中有 1360000 行。此示例更新其中的 600 行。Oracle 版本是 11g Coldfusion 版本是 9.1
<cfloop from="1" to="#qry1.recordcount#" index="i">
<cfquery name="qry2" datasource="db1">
UPDATE PRODUCTS P
SET P.QTY = <cfqueryparam value="#qry1.ITEM_NEW_INCOMING_QUOTE_QTY#" cfsqltype="cf_sql_numeric" />
WHERE P.PRODUCT= <cfqueryparam value="#qry1.PRODUCT#" cfsqltype="cf_sql_varchar" />
AND EXISTS(
SELECT QUOTE_ID
FROM QUOTE Q
WHERE P.QUOTE_ID = Q.QUOTE_ID
AND Q.QUOTE_NUMBER = <cfqueryparam value="#Val(qry1.QUOTE_NUMBER)#" cfsqltype="cf_sql_numeric" />
)
</cfquery>
</cfloop>