Code: Alles auswählen.
DATA t_t002 TYPE TABLE OF t002.
GET RUN TIME FIELD DATA(t0).
SELECT *
FROM t002
INTO CORRESPONDING FIELDS OF TABLE t_t002.
GET RUN TIME FIELD DATA(t1).
CLEAR t_t002.
GET RUN TIME FIELD DATA(t2).
SELECT spras laspez lahq laiso
FROM t002
INTO TABLE t_t002.
GET RUN TIME FIELD DATA(t3).
DATA(r0) = t1 - t0.
DATA(r1) = t3 - t1.
WRITE:
r0, /, r1.
Bei mir ist es grade so, dass ohne CORRESPONDING viel länger dauert. Ich war aber auch so frei dein Testprogramm dahingehend zu ändern, das erst der Select ohne CORRESPONDING aufgerufen wird und dann erst der mit.Tommy Nightmare hat geschrieben: In meinem Beispiel lief der Select mit "INTO CORRESPONDING" immer ca. 2,5 mal länger.
Ich würde also von immer empfehlen, die zu selektierenden Felder in die Select Liste zu schreiben und das "CORRESPONDING" wegzulassen.
In den meisten Fällen weiß man ja vorher schon, welche Felder man braucht.
LG Tommy
Wird es.Tommy Nightmare hat geschrieben:anscheinend wird das irgendwie gepuffert...
Wie ist das bitte zu verstehen?- sortierung auf db ausgelagert? (wenn nötig)
Klar, dafür ist sie ja da.Ansonsten darf man die Datenbank gerne arbeiten lassen...
Ich habe auch mal geglaubt, dass hashed-Tabellen besser seien. Bis ich mir irgendwann mal die Mühe gemacht habe, ein Testprogramm zu schreiben und die Performance zu messen. (Irgendwo hier gibt es noch den Thread, in dem ich das Programm und meine Messergebnisse vorgestellt habe.) Das Ergebnis war, dass das Füllen der Hashtabelle (wohl wegen der Berechnung der Hashes) um so viel langsamer war, dass man hinterher Abertausende von Suchvorgängen brauchen würde, damit sich dieser Nachteil gegenüber einer sorted table amortisiert. Dabei nützt es auch nichts, von besonders großen Tabellen auszugehen. Bei denen ist der (geringe) Suchvorteil der hashed table zwar größer, dafür sind aber auch entsprechend mehr Hashes beim Befüllen der Tabelle zu berechnen.nickname8 hat geschrieben:- sortierte oder noch besser hashed tabellen nutzen
Die ABAP-Tabellenpufferung hat damit gar nichts zu tun, die ist nämlich nur bei Tabellen überschaubarer Größe (typischerweise Customizingtabellen) aktiviert, nicht bei den Anwendungsdatentabellen, auf die man in seinen Programmen meist zugreift. Der hier beschriebene Effekt tritt jedoch auch bei letzteren auf. Ursache ist, dass die Datenbanken selber auch puffern. Wer oft hintereinander auf dieselbe Tabelle oder gar dieselben Sätze der Tabelle zugreift, bekommt die späteren Zugriffe wesentlich schneller erledigt. Das ist nicht so schnell wie die ABAP-Tabellenpufferung, die SAP-serverseitig im Hauptspeicher erfolgt und schon gar nicht so schnell wie eine durchdacht programmierte Pufferung in einer sortierten internen Tabelle, aber es ist allemal drastisch schneller als ein erstmaliger Zugriff.nickname8 hat geschrieben:Wird es.Tommy hat geschrieben:anscheinend wird das irgendwie gepuffert...
https://ibb.co/HGR3XmF
Auf was für einem alten Release sitzt Du? Die SAP stellt Clustertabellen nach und nach auf transparente Tabellen um, und auf meinem 7.50 ist die REGUP auch eine transparente Tabelle. Weitere Indizes sind trotzdem nicht darauf definiert, aber das könnte man notfalls selber machen. Sollte man natürlich möglichst vermeiden, weil es bei großen Tabelle viel Speicherplatz und auch etwas Rechenzeit kostet.nickname8 hat geschrieben:- REGUP ist eine Clustertabelle - da gibts keine zusätzlichen Indizes drauf
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
Legxis