我有一个带有以下数据源设置的自定义表单;
SalesTable
SalesLine (SalesTable - Inner Join)
InventTable (SalesLine - Inner Join)
InventDim (SalesLine - Inner Join)
...没有任何性能问题。
当我添加以下内容时;
InventHazardousGroup (InventTable - Outer Join)
...我在我们的开发环境中没有发现性能问题,但是在生产环境中查询非常慢,这意味着表单需要很长时间才能加载。
SQL 语句跟踪日志在两种环境中都产生了以下输出;
(我已经用 etc 结束了字段列表,因为它很长);
SELECT A.SALESID,A.SALESNAME,A.RESERVATION,A.CUSTACCOUNT,A.INVOICEACCOUNT,A.DELIVERYDATE,A.DELIVERYADDRESS,A.URL,A.PURCHORDERFORMNUM,A.SALESTAKER,A.SALESGROUP,A.FREIGHTSLIPTYPE,A.DOCUMENTSTATUS,A.INTERCOMPANYORIGINALSALESID,etc
FROM {OJ INVENTTABLE C LEFT OUTER JOIN INVENTHAZARDOUSGROUP E ON ((E.DATAAREAID=?)
AND (C.HAZARDOUSGROUPID=E.HAZARDOUSGROUPID))},SALESTABLE A,SALESLINE B,INVENTDIM D
WHERE ((A.DATAAREAID=?)
AND (A.SALESTYPE=?))
AND ((B.DATAAREAID=?)
AND (A.SALESID=B.SALESID))
AND ((C.DATAAREAID=?)
AND (B.ITEMID=C.ITEMID))
AND ((D.DATAAREAID=?)
AND (B.INVENTDIMID=D.INVENTDIMID))
ORDER BY A.DATAAREAID,A.SALESID OPTION(FAST 1)
有什么理由为什么这在一个环境中应该如此缓慢而在另一个环境中却没有?我在开发环境中测试的数据是最近的,大约 1 个月大。我在不同公司的生产环境中遇到了同样的性能问题。