[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Aug 2006
    Beiträge
    2.114
    So:
    CREATE VIEW DAT008 AS SELECT SOID1, SOID2, SODNBI, SODNVO, SOID4, SO
    EIPR, SOSA16, SOEIP2 FROM SON01PF WHERE SOFA = 1 AND SOSTS = 0
    AND SOABKZ = 0 AND SOJHVO = 1 AND SOEIPR > 0 AND (SODNBI >= YEAR(CU
    RRENT DATE)*10000 + MONTH(CURRENT DATE)*100 + DAY(CURRENT DATE)) GRO
    UP BY SOID1, SOID2, SODNBI, SODNVO, SOID4, SOEIPR, SOSA16, SOEIP2 RC
    DFMT DAT008SATZ

    Für ne DDS Datei zu kompliziert

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Dieses SQL-Statemen kann weder in eine DDS beschreibene logische noch in einen SQL Index konvertiert werden, allein schon deshalb, weil Du einen Group By und das special Register CURRENT_DATE verwendet hast.

    Ich frage mich wirklich, warum Du Dich mit Händen und Füßen gegen die Verarbeitung mit embedded SQL wehrst.

    Mit embedded SQL kannst Du gezielt die Daten-Sätze für die einzelnen Kunden auslesen und dann verarbeiten.
    Evtl. wäre es sogar möglich die View mit einer weiteren Tabelle (sofern vorhanden) zu verküpfen und nur die gewünschten Kunden selektieren.

    Sofern Du die richtigen Zugriffswege hast, sollte das Ganze auch performant laufen.
    Wenn es eine Eintagsfliege ist und Du keine neuen Indices anlegen willst, musst Du halt etwas länger warten bis das Programm fertig ist.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  3. #3
    Registriert seit
    Aug 2006
    Beiträge
    2.114
    Ich sträube mich nicht, sonst würde ich ja nicht fragen.
    Die Aufgabenstellung ist das ich eine Schnittstellen-Datei mt alle Kunden/Artikeln füllen muß. Ergebnis sind 191.000 Sätze.

    Habe 1.000 Kunden und 2.000 Artikel / Preis mit Gültigkeitsdatum.

    Hole mir also den ersten Kunden, und schaue dann ob ich in der Datei für diesen Kunden einen Artikel mit Sonderpreis habe und schreibe diesen dann in eine Datei weg um diese später zu in eine Text-Datei zu exportieren.

    Die Laufzeit beträgt zur Zeit 2 Stunden. Was schnelle Tests bei Änderungen unmöglich macht.

    Das Programm läuft täglich um immer alle aktuellen Preise zu haben.

    Ohne aktiven Diskussionspartner bekomme ich das Problem zwar gelöst aber halt nicht die Optimale Lösung. Ich werde daher über das Problem nochmals nachdenken.

    Danke erstmal für die Hinweise.

    GG

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    1. Würde ich die View ohne diese Umrechnung des Tages-Datums in einen numerischen Wert erstellen. Das numerische Datum solltest Du dann vor der Verwendung der View in einer Host-Variablen ermitteln und in Deinem Programm als zusätzliche WHERE-Bedingung hinzufügen.

    2. Sofern Du das (numerische) Datum weiterhin in der View verwenden möchtest, solltest Du Dir eine Globale Variable anlegen, in der das numerische Tagesdatum ermittelt wird. Globale Variablen werden beim ersten Aufruf innerhalb eines Jobs aktualisiert.
    Globale Variablen können in Views verwendet werden.

    3. Würde ich die View direkt mit dem Kundenstamm (oder woher die Kunden auch immer kommen) verknüpfen und alles in einem einzigen Cursor verarbeiten.

    4. Prüfe, ob für die Verarbeitung auch die richtigen Zugriffswege vorhanden sind, oder ob vielleicht eine Index-Empfehlung vorliegt.
    STRDBG vor Ausführung und dann Blick ins Joblog oder Visual Explain.
    Es sollte zumindest ein Zugriffsweg vorhanden sein in dem das aktuelle Datum (führend) enthalten ist. Ggf. könnten auch die sonstigen WHERE-Bedigungen als WHERE-Bedigungen in dem Index hinterlegt werden (Syntax muss allerdings übereinstimmen).

    SQL ist nur auf den ersten Blick einfach!
    Deshalb empfiehlt die IBM ja inzwischen "Database Adminsitrators" bzw. "Database Engineers".
    ... es soll übrigens auch Firmen geben, die SQL auch im Hinblick auf solche Probleme schulen

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  5. #5
    Registriert seit
    Aug 2006
    Beiträge
    2.114
    Jo danke, werde ich drüber nachdenken.
    Und im nächsten Leben würde ich auch gerne in einer richtigen Firma arbeiten wo die EDV nicht als notwendiges Übel betrachtet wird.

    Es müßen ja nicht direkt die Zeiten sein wo die Jungs noch mit Kitteln über den Flur gegangen sind.

    Aber in den 10 Jahren die ich hier bin wurden genau 0€ in Schulungen investiert.

    Und da ich alleine für die komplette EDV von der Telefonanlage über die Server und Netzwerke bis zum Indutrieroboter zuständig bin kann man sich vorstellen das da wenig Zeit bleibt um sich intensiv einzuarbeiten..

    GG

Similar Threads

  1. Mehrere IFS-Dateien gleichzeitig bearbeiten (als Array?)
    By FNeurieser in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 30-01-15, 07:05
  2. Cobol View und Index (V5R4)
    By KingofKning in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 29-12-14, 12:01
  3. Erstellen einer View
    By Jenne in forum IBM i Hauptforum
    Antworten: 13
    Letzter Beitrag: 21-11-13, 10:28
  4. Datei mit DFU bearbeiten
    By heynem in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 25-10-05, 14:32
  5. IFS-Streamfile in RPG bearbeiten
    By Bleil in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 13-10-01, 20:15

Berechtigungen

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