[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Nun ja, entweder dynamisches SQL oder statisches.
    Beim statischen SQL musst du eben 1000 Variablen aufführen.
    Aber es gibt da noch einen kleinen Trick (den ich auch gerne verwende):

    Nimm deine obige InSelekt-Variable und baue die Werte immer mit einen Trennzeichen zusammen (auch am Ende!).
    "Wert1; Wert2; .....; WertN; "

    Nun vergleiche:

    where POSSTR(: InSelect, char(Feld) concat '; ' ) > 0

    Bei numerischen klappt das ja ganz gut. Bei Zeichenketten muss man sich da schon ein Trennzeichen einfallenlassen, dass so nicht vorkommt. Hier bieten sich Hexwerte ganz gut an, da dies sowohl von ILERPG als auch SQL unterstützt wird, z.B. X'01'.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  2. #2
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    Wenn die Werte noch nicht alle feststehen und es sehr viele werden können ...
    Stehen die evtl. in einer Datei ?

    select ... from ... where feld in (select distinct Feld2 from Datei where ... )

    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Aus Performancegründen kann es besser sein "where exists (select * from filex where outerfile.field = filex.key)". Hier wird von SQL nur ein Zugriff (bei Index) durchgeführt. Beim obigen "in (select distinct ...)" wird dies ggf. für jeden Satz wiederholt!
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #4
    Registriert seit
    Jan 2012
    Beiträge
    1.199
    Vielen Dank an alle. Ich bin mir bewusst, dass es eine ganze Reihe von Möglichkeiten gibt, das Problem anders zu lösen: Dynamisches SQL, Schlüssel in eine Datei schreiben, ...

    Mein Favorit war halt statisches SQL. Deshalb habe ich gefragt.
    @Baldur: Der Trick ist nicht schlecht, aber ich befürchte da doch Performanceeinbußen, da das SQL ja erstmal eine char-Funktion für jeden Satz der Datei ausführen müsste.

    Aber ihr alle habt mir sehr weitergeholfen, weil ich jetzt weiß, dass es über meinen favorisierten Weg nicht geht. Ich werde jetzt irgendeinen anderen Weg nehmen.

    Vielen Dank.

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Dateizugriffe kosten Performance!
    Ein bisschen Rechnerei ist da eher unkritisch. Ich denke pro Satzzugriff kannst du durchaus mehrere Millionen Rechenoperationen durchführen.
    Die Performance ist weniger das CHAR und der POSSTR sondern dass deine Selektion keinen Index verwenden kann.
    Was du wohl machen kannst ist:
    - Schreibe die In-Werte in eine neue Tabelle, ggf. Job-Nr. als Hilfskey
    - Verknüpfe deinen SQL mit "inner join ", aber ggf. von der neuen Tabelle auf die Haupttabelle
    Man sollte immer einen
    "Select ... from KleinsteTabelle inner/left join GrößereTabelle on ..." versuchen und für die Beziehungen Indizes anlegen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Jan 2012
    Beiträge
    1.199
    Ich bin bereits dabei, eine Hilfsdatei anzulegen.

    Aber nochmal zu deinem Posstr. Ich meinte nicht die Perfomance wegen der Berechnung, sondern die Problematik, dass wegen des fehlenden Index jeder Satz der Datei mit Posstr überprüft werden muss.

    Danke nochmal.
    Dieter

Similar Threads

  1. Antworten: 4
    Letzter Beitrag: 15-10-14, 14:56
  2. Antworten: 0
    Letzter Beitrag: 08-10-14, 12:49
  3. Cobol/400 - "Fett", "Unterstreichen" als HEX-Wert
    By RLurati in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 05-08-14, 09:10
  4. starten Group Job in einer Interaktiven Session "vom aussen"
    By OMi in forum NEWSboard Programmierung
    Antworten: 11
    Letzter Beitrag: 17-02-14, 14:44
  5. "zu wenig Speicher" Rational Developer for Power-Systems
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 13-02-14, 20:58

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •