[gelöst] Abfrage über Client langsamer als über SQL!?

4. Januar 2010 10:11

Hallo zusammen,

ich bin derzeit ein technisches Update von 2.60 auf 2009 SP1 am testen.
Das System läuft nun um einiges performanter, bis auf eine Ecke...

Die Abfrage in Navision sieht folgendermaßen aus:
Code:
SETCURRENTKEY("Auftrag buchen","Auftrag gebucht","Fehler beim Buchen", "Import durchgeführt","Niederlassungskz.");
SETRANGE("Auftrag buchen",TRUE);
SETRANGE("Auftrag gebucht",FALSE);
SETRANGE("Fehler beim Buchen",FALSE);
SETRANGE("Import durchgeführt",TRUE);
SETRANGE("Niederlassungskz.",'');
IF FINDFIRST THEN BEGIN
...


Die Abfrage über den NAV Client dauert ca. 25 Sekunden.
Wenn ich mir die Query über den SQL Profiler anschaue und manuell auf dem SQL Server ausführe, bekomme ich innerhalb einer Sekunde den gewünschten Datensatz.
In der Tabelle sind >5mio Datensätze vorhanden.
Habe bereits die Keys und die SIFT Tabellen neu aufgebaut, leider ohne Erfolg.

SQL Query:
Code:
SELECT TOP 1 *
FROM tabelle
WITH (READUNCOMMITTED)   
WHERE (("Auftrag buchen"=1))
AND (("Auftrag gebucht"=0))
AND (("Fehler beim Buchen"=0))
AND (("Import durchgeführt"=1))
AND (("Niederlassungskz."=''))
ORDER BY "Auftrag buchen","Auftrag gebucht","Fehler beim Buchen","Import durchgeführt","Niederlassungskz.","Lieferscheinnummer","Zeilennummer"
OPTION (OPTIMIZE FOR UNKNOWN)


Kann mir jemand sagen wie diese Verzögerung im Client zustande kommt?
Bin leider mit meinem Latein am Ende :-(

Danke und einen guten Start ins neue Jahr
Christoph
Zuletzt geändert von ChristophE am 4. Januar 2010 11:20, insgesamt 1-mal geändert.

Re: Abfrage über Client langsamer als über SQL!?

4. Januar 2010 10:39

Hallo Christoph,

deine Tabelle hat nicht gerade die selektivsten Schlüssel mit den Feldwerten von True und False. Benutzt der SQL-Server einen Schlüssel oder geht er die Tabellen sequenziell durch?
Ist das "Niederlassungskz." selektiver als der Rest der Felder.

Bau doch mal einen Schlüssel ein, der mit dem Niederlassungskz anfängt evtl. geht das schneller (Setranges evtl. auch umstelen)

Gruß, Fiddi

Re: Abfrage über Client langsamer als über SQL!?

4. Januar 2010 11:20

Hi Fiddi,

das "Niederlassungskz." ist leider auch nicht selektiver.
Mit dem "Niederlassungskz." am Anfang des Schlüssels hat nicht geholfen.

Aber ein SETFILTER statt SETRANGE hat Wunder bewirkt :-D
Das habe ich auch noch nicht erlebt...
Auf 2.60 lief es ja komischerweise so.
Das SQL Query sieht auch nicht anders aus als mit SETRANGE!?
Wird wohl nur im NAV Client anders verarbeitet.

Naja, vielen Dank auf jeden Fall!

Gruß