View Full Version : Frage wegen DDS, CONCAT Funktion
Danke, Birgitta - wäre schön mit dem Index, aber die Indexerstellung bei 28 GB kann ziemlich lange laufen, muss ich es überlegen.
Wenn du eine LF mit Key erstellst, braucht das aber auch doch seine Zeit ?
Gruß Ronald
Ich werde es zuerst in einer Testumgebung ausprobieren, thanks.
Die einmalige Zeit der Indexerstellung steht ggf. der Summe der eingesparten Laufzeiten gegenüber. Dabei spielt die Größe des Index keine Rolle.
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.
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
WHERE-Bedingungen sind bei Indices erlaubt.
Wie sieht denn Deine Syntax mit der WHERE-Bedingung aus?
Birgitta
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.
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
Geht das in RPG ? Sorry, wusste ich nicht - ich probiere es aus, danke.