我正在使用以下查询:
set use-result-cache false
set use-http-cache false
create or replace table settings@inmemorystorage
as
select '29676ec4-61b5-45eb-a5a3-6feffe03d1d3' sor_id
, '[[Exploded]]' exploded_signal_text
, '{res:itgen_eol_sales_order}' entity_name_singular
, '{res:itgen_eol_sales_orders}' entity_name_plural
from me
select ...
from settings@inmemorystorage stg
left
outer
join ExactOnlineREST..salesorders sor
on sor.orderid = stg.sor_id
left
outer
join ExactOnlineREST..salesorderlines soe
on soe.orderid = stg.sor_id
left
outer
join BillOfMaterialItemDetails bom
on bom.billofmaterialitemdetails_billofmaterial_item_id_attr_guid = soe.item
left
outer
join ExactOnlineREST..items itm
on itm.ID = bom.item_id_attr_guid
left
outer
join ExactOnlineREST..itemsread itr
on itr.code = bom.item_code_attr
where sor.orderid is not null
and itm.class_10 in ('A', 'D', 'M', 'S', 'Z')
从 Exact Online 检索数据。在我的测试环境中,它运行大约 1 秒以将物料清单爆炸应用于销售订单(在 Exact Online 的 XML 和 REST API 上大约读取 5 次)。但是,在客户站点上运行时间超过 15 分钟。似乎与物料清单中使用的物品(物品)的检索有关;在我的测试环境中,大约有 100 个项目,而客户站点有 250.000 个项目。
但是,此查询用于交互式程序,应在 2.5 秒内运行。
我尝试将 itemsread 和 items 结合起来以限制检索到的项目,但是它们具有两个表都需要的不同字段。
如何优化此查询以更快地处理大量数据?