[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Jan 2012
    Beiträge
    1.199
    Ist zwar nicht so schön: Aber du kannst ja die 3 Einzelfelder in der LF deklarieren und dann im RPG beim Positionieren dein Datum zerlegen und mit einer Keylist zugreifen. (Aber ich denke, das war dir bereits klar)
    Dieter

  2. #2
    Registriert seit
    Jan 2008
    Beiträge
    58
    Jou, Dieter, das ist mir klar - der Mensch ist aber faul , Ich wollte mir das Leben einfach leichter machen...
    Danke für Eure Bemühungen.

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Sofern Du auf Release 6.1 oder höher bist, kannst Du einen SQL-Index mit einem zusätzlichen verketteten Schlüssel-Feld definieren und diesen Index im Anschluss (wie jede geschlüsselte logische Datei) mit native I/O verarbeiten.

    Code:
    CREATE INDEX YourSchema.YourIndex 
    	ON YourFile.YourTable   
    	( DIGITS ( YOURYEAR ) CONCAT DIGITS ( YOURMONTH ) CONCAT DIGITS ( YOURDAY ) AS DATECHAR ASC )
    	RCDFMT TESTDATEF ADD ALL COLUMNS ;
    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

  4. #4
    Registriert seit
    Jan 2008
    Beiträge
    58
    Danke, Birgitta - wäre schön mit dem Index, aber die Indexerstellung bei 28 GB kann ziemlich lange laufen, muss ich es überlegen.

  5. #5
    Registriert seit
    May 2002
    Beiträge
    1.121
    Wenn du eine LF mit Key erstellst, braucht das aber auch doch seine Zeit ?

    Gruß Ronald

  6. #6
    Registriert seit
    Jan 2008
    Beiträge
    58
    Ich werde es zuerst in einer Testumgebung ausprobieren, thanks.

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Die einmalige Zeit der Indexerstellung steht ggf. der Summe der eingesparten Laufzeiten gegenüber. Dabei spielt die Größe des Index keine Rolle.
    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

  8. #8
    Registriert seit
    Jan 2008
    Beiträge
    58
    Ich habe eine Sache dabei vergessen - die Datumsfelder kann ich nur unter bestimmten Bedigungen aus einer Stelle rausschneiden - also ein Index für die ganze Datei entfällt; man kann kein "where" im Index haben. Sonst wäre es richtig so:
    CREATE INDEX TEST/TESTIDX
    ON TEST/TESTPF
    ( (SUBSTR(TEXT, 25, 4)) CONCAT
    (SUBSTR(TEXT, 22, 2)) CONCAT
    (SUBSTR(TEXT, 19, 2)) AS DATECHAR ASC )
    RCDFMT TESTPFF1 ADD ALL COLUMNS
    Habe ich mit einer vorselektierten Test Datei ausprobiert.

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    CREATE INDEX TEST/TESTIDX
    ON TEST/TESTPF
    ( (SUBSTR(TEXT, 25, 4)) CONCAT
    (SUBSTR(TEXT, 22, 2)) CONCAT
    (SUBSTR(TEXT, 19, 2)) AS DATECHAR ASC )

    WHERE ...........

    RCDFMT TESTPFF1 ADD ALL COLUMNS
    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

  10. #10
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    WHERE-Bedingungen sind bei Indices erlaubt.
    Wie sieht denn Deine Syntax mit der WHERE-Bedingung aus?

    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

  11. #11
    Registriert seit
    Jan 2008
    Beiträge
    58
    Hallo Birgitta,
    Es könte so ausehen (ausprobiert):
    CREATE INDEX TEST/TESTIDX1
    ON TEST/TESTKOPF
    (DIGITS (SUBSTR(TEXT, 21, 4)) CONCAT
    DIGITS (SUBSTR(TEXT, 18, 2)) CONCAT
    DIGITS (SUBSTR(TEXT, 15, 2)) AS DATECHAR ASC )
    WHERE POSSTR(TEXT, 'DISPONIERT') > 0
    and SATZ_KZ = 'STATI'
    and LIEFNR < 990000000
    RCDFMT TESTKOPFF1 ADD ALL COLUMNS
    - aber wie kann diesen Index nutzen ? Direkt selektieren geht damit nicht.

  12. #12
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Ich dachte Du wolltest mit native I/O und nicht mit SQL zugreifen!
    Native I/O kann SQL-Indices wie jede geschlüsselte Datei verarbeiten.
    (In SQL kann/darf man einen Index nicht direkt angeben! Der Optimizer sucht sich den Zugriffspfad)

    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

Similar Threads

  1. SQL CONCAT
    By tarkusch in forum NEWSboard Programmierung
    Antworten: 11
    Letzter Beitrag: 27-01-22, 12:41
  2. Funktion die ich vermisse
    By AS400.lehrling in forum Intern - Hilfe - Feedback - Tests-Forum
    Antworten: 4
    Letzter Beitrag: 20-10-15, 20:24
  3. Funktion für Feldeintrag
    By H.V in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 20-09-02, 16:00
  4. Frage zur Formatierung mit Funktion DIGITS in QRY
    By hs in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 14-02-02, 06:30
  5. SQL Funktion " Like"
    By Stefan_R in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 23-01-02, 16:08

Tags for this Thread

Berechtigungen

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