2017-06-07 6 views
1

Wir haben 20 Lager und 3.000 Artikel. Daher gibt es 60.000 Zeilen in der ItemWarehouses-Tabelle von Exact Online. Der Abruf dauert jedoch 1200 ms pro 60 Zeilen, so dass die Gesamtabfrage für eine Warehouse-Analyse auf diesem Datenvolumen 3-4 Stunden dauert.Verbessern Sie die Leistung von Warehouse Abfrage auf Exact Online

Ich habe versucht, die Anzahl der Daten mit dem folgenden Filter abgerufen zu beschränken, weil wir nur in den Punkten mit einigen Nicht-Null Bestandsinformationen sind:

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

Aber es noch lädt alle 60.000 Kombinationen und filtert sie am PC. Das Ergebnis am Ende sind ca. 700 gültige Kombinationen von Lager- und Warenbestandsinformationen.

Gibt es eine Möglichkeit, die Daten auf eine leistungsfähigere Weise zu erhalten?

Antwort

0

Invantive SQL leitet OR-Konstrukte nicht an die Serverseite weiter. Aber in diesem Fall sollten Sie die OR in eine UNION (ohne ALL) zu ändern:

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 

Diese Filter werden weitergeleitet Online auf Exact und sollte sehr schnell angesichts Ihrer Datenverteilung führen. Die UNION stellt sicher, dass Sie nur die eindeutigen Zeilen zurückbekommen.

+0

Das funktioniert super, danke, Guido! – Joanna

Verwandte Themen