1

我们有 20 个仓库和 3.000 件物品。因此,Exact Online 的 ItemWarehouses 表中有 60.000 行。但是,每 60 行检索需要 1200 毫秒,因此对该数据量进行仓库分析的总查询需要 3-4 小时。

我试图限制使用以下过滤器检索的数据数量,因为我们只在具有一些非零库存信息的项目中:

select t.* 
from   exactonlinerest..itemwarehouses t
where  ( currentstock != 0 or projectedstock != 0 or plannedstockin != 0 or plannedstockout != 0 or safetystock != 0 or reorderpoint != 0)

但它仍然会下载所有 60.000 个组合并在 PC 上过滤它们。最后的结果是大约 700 个有效的仓库和物料库存信息组合。

有没有办法以更高效的方式检索数据?

4

1 回答 1

0

Invantive SQL 不会将 OR 结构转发到服务器端。但在这种情况下,您可能希望将 OR 更改为 UNION(没有 ALL):

select t.* 
from   exactonlinerest..itemwarehouses t
where  currentstock != 0
union 
select t.* 
from   exactonlinerest..itemwarehouses t
where  projectedstock != 0
union 
select t.* 
from   exactonlinerest..itemwarehouses t
where  plannedstockin != 0
union 
select t.* 
from   exactonlinerest..itemwarehouses t
where  plannedstockin != 0
union 
select t.* 
from   exactonlinerest..itemwarehouses t
where  safetystock != 0
union 
select t.* 
from   exactonlinerest..itemwarehouses t
where  reorderpoint != 0

这些过滤器被转发到 Exact Online,并且根据您的数据分布运行速度应该非常快。UNION 确保您只取回唯一的行。

于 2017-06-07T09:03:51.253 回答