Anmelden

View Full Version : SQL in RPG dauert ewig



Seiten : 1 [2]

itec01
09-03-21, 13:09
Danke für die konstruktiven Antworten.
Ich baue nun das SQL auf das exists statement um, weil die OR Verknüpfung sicherlich nicht gut ist.
Das könnte schon das Problem gewesen sein. Echt blöd ist halt, dass sich RPG mal wieder anders verhält als der Rest. Ich gehe immer so vor, dass ich mir das SQL im Visualizer oder ACS Editor baue und auch auf Performance hin teste und dann ins RPG übertrage. Klar wird dann dort auch noch einmal ein Test gemacht, aber bei den vielen Selektionsauswahlen kann man nicht alle Kombinationen testen, das darf dann der User tun.
@Brigitta, ja das stimmt mit der logischen. Hier greift sich der Optimizer eh was er gerne hätte. Ist geändert.

KingofKning
09-03-21, 13:41
Mit SQL sollte ausschließlich auf Tabellen/physische Dateien und Views zugegriffen werden.
Beim Zugriff auf eine logische Datei wird die Abfrage zunächst.....

Erinnert mich ein wenig an Deinen Artikel vor genau einem Jahr. Wobei mein Kleinhirn noch nicht den Unterschied zwischen LF und View erkannt hat. (Außer evtl. Schlüssel) Ist aber auch nicht so wichtig, da ich nur mit tausenden Datensätzen zu tuen habe und mit Kisten die schon > 10 Jahre sind viele auch älter 20 Jahre.
https://midrange.de/sql-indices-anstelle-von-logischen-dateien-verwenden/

GG 3735

Fuerchau
09-03-21, 15:45
LF = DDS-View (Select/Omit/Index, Joins)
View = SQL-View (Full-Select where, kein Index)
Index= SQL-Index (kann aber where enthalten und ist dann eher mit der LF vergleichbar)

RPG/LE wird grundsätzlich vom SQL als Batch interpretiert.
ACS/STRSQL eben als Dialog mit unbekannten, nicht öffentlichen, Zusatzeinstellungen.
Ggf. weiß die SQL-Engine, wer da was abfragt und optimiert dann anders.

Die Debugnachrichten unterscheiden sich da schon mal zwischen STRSQL oder embedded SQL.

Andreas_Prouza
10-03-21, 08:20
Die Debugnachrichten liefern auch nicht alle Informationen die es für diese Abfrage gibt.
Dafür wäre ein Monitor sinnvoll.
Im RPG hast du z.B. die Möglichkeit mit SET OPTION bestimmte Einstellungen für den Kompiler vorzugeben.
Je nach Einstellungen (und davon gibt es einige), kann sich das verhalten ändern.
RPG hat seine Default-Einstellungen und der ACS/STRSQL & Co können ebenfalls ihre eigene Default-Einstellungen haben.
Den tatsächlichen Unterschied, kann man via Monitor vergleichen und dann sieht man woran es liegen könnte.

lg Andreas