Zwischen Select und Endselect wird nicht alles selektiert

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
19 Beiträge • Vorherige Seite 2 von 2 (current)
19 Beiträge Vorherige Seite 2 von 2 (current)

Beitrag von Gast ( / / 0 / 3 ) »
Frank Münker hat geschrieben:aber was ich nicht verstehe ist, warum eine SELECT * Anweisung performanter sein soll als eine SELECT feld1 feld4 feld7 - Anweisung ?
Wenn wegen des *, das immer und überall verwendet wird, kein neues PREPARE mehr nötig ist, weil das schon gepufferte Statement vom Applikationsserver wiederverwendet werden kann, und das Fetch und der Netz-Transfer im Vergleich zum eingesparten PREPARE nicht zu langsam sind.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von Frank Münker (ForumUser / 16 / 0 / 0 ) »
Wenn wegen des *, das immer und überall verwendet wird, kein neues PREPARE mehr nötig ist, weil das schon gepufferte Statement vom Applikationsserver wiederverwendet werden kann, und das Fetch und der Netz-Transfer im Vergleich zum eingesparten PREPARE nicht zu langsam sind.
Hmmm .... interessanter Aspekt. Allerdings ist im gegebenen Fall ja die WHERE - Bedingung in jedem Schleifendurchlauf anders, dann müsste also trotzdem immer ein neues PREPARE notwendig werden, oder ?
Wenn sie aber immer gleich wäre, dann würde nur beim ersten Mal von 10.000 Durchläufen ein neues PREPARE fällig.

Also, ich denke, wenn ich einen einzigen SELECT SINGLE auf eine kleine (sprich: "schmale" )Tabelle mache, dann kommt es wohl aufs gleiche raus, aber bei vielen Datensätzen von "breiten" - Tabellen ist das FETCH und der Netz-Transfer bei einem SELECT * bestimmt sehr viel langsamer.

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Frank Münker hat geschrieben: Hmmm .... interessanter Aspekt. Allerdings ist im gegebenen Fall ja die WHERE - Bedingung in jedem Schleifendurchlauf anders, dann müsste also trotzdem immer ein neues PREPARE notwendig werden, oder ?
Wenn sie aber immer gleich wäre, dann würde nur beim ersten Mal von 10.000 Durchläufen ein neues PREPARE fällig.

Also, ich denke, wenn ich einen einzigen SELECT SINGLE auf eine kleine (sprich: "schmale" )Tabelle mache, dann kommt es wohl aufs gleiche raus, aber bei vielen Datensätzen von "breiten" - Tabellen ist das FETCH und der Netz-Transfer bei einem SELECT * bestimmt sehr viel langsamer.
Es geht ja irgendwo auch um die Performance des Gesamtsystems, nicht nur der einzelnen Anwendung.

Hast Du schon mal im SQL-Trace nachgesehen, was das PREPARE zu einem SELECT SINGLE kostet im Vergleich zum FETCH?

Ein neues PREPARE ist nicht nötig, wenn sich nur die Inhalte in der WHERE-Klausel ändern (also z.B. gleiche Anzahl von Einträgen in Select-Option, gleiche Reihenfolge bei SIGN/OPTION).
Um ein Prepare wiederverwenden zu können, muss auch die Reihenfolge der zu selektierenden Felder übereinstimmen
Es wird nur eine begrenzte Anzahl von aufbereiteten Statements gepuffert, danach werden die ältesten nicht mehr benötigten Statements entsorgt, und es ist bei Wiederholung ein neues PREPARE nötig

Hast Du schon mal ausgerechnet, wie viele verschiedene SELECT SINGLE felfx feldy feldz... man auf die VBRK machen kann?

In o.g. Beispiel ist aber unstrittig, dass SELECT SINGLE * suboptimal ist.

Beitrag von Frank Münker (ForumUser / 16 / 0 / 0 ) »
Habe auf unserem System mal etwas rumgespielt und ich gebe zu, dass ein SELECT SINGLE * Statement in der Tat schneller ist, wenn dieses noch gepuffert ist. Allerdings reden wir absolut gesehen nur über ein paar Mikrosekunden.

Aber wie auch immer: mal eine echt interessante Diskussion hier, hat mich sehr gefreut ... :-)

Vergleichbare Themen

7
Antw.
2509
Views
Statusanzeige bei select / endselect
von nikibert » 30.05.2008 10:30 • Verfasst in ABAP® für Anfänger
3
Antw.
2578
Views
richtige Schachtelung von select / endselect ???
von barbara » 08.05.2006 11:15 • Verfasst in ABAP® für Anfänger
7
Antw.
2782
Views
Select Endselect - Shortdum beim Debuggen
von JohnLocklay » 20.11.2018 08:50 • Verfasst in ABAP® Core
8
Antw.
4575
Views
Select/Endselect in dynamisch erzeugte itab
von nickname8 » 20.07.2015 13:15 • Verfasst in ABAP® für Anfänger
1
Antw.
1548
Views
Select...Endselect...letzter Datensatz in der itab doppelt
von Kali » 27.03.2013 14:32 • Verfasst in ABAP® für Anfänger

Aktuelle Forenbeiträge

IBAN und BUT0BK
vor 3 Tagen von GastX gelöst 4 / 3849
Gewährleistungsende im Equipment
vor 4 Tagen von Yourairld gelöst 8 / 26117
IF mit AND und OR
vor 3 Wochen von GastX 6 / 14326
Meine Inbox
vor 3 Wochen von Rabea1103 1 / 11774

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

IBAN und BUT0BK
vor 3 Tagen von GastX gelöst 4 / 3849
Gewährleistungsende im Equipment
vor 4 Tagen von Yourairld gelöst 8 / 26117
IF mit AND und OR
vor 3 Wochen von GastX 6 / 14326
Meine Inbox
vor 3 Wochen von Rabea1103 1 / 11774