Vorgehensweise: Referenz: |
Automatischer indizierter Abruf (AUTOINDEX) optimiert die Geschwindigkeit des Datenabrufs in FOCUS-Datenquellen. Um automatischen indizierten Abruf verwenden zu können, muss die Anfrage einen Gleichheits- oder Bereichstest für ein indiziertes Feld im höchsten Segment enthalten, auf das in der Anfrage verwiesen wird.
Diese Methode wird nicht unterstützt, wenn:
Entsprechende Informationen über AUTOINDEX finden Sie im Handbuch Reportanwendungen entwickeln .
SET AUTOINDEX = {ON|OFF}
Hierbei gilt:
Verwendet wenn möglich indizierten Datenabruf für optimierte Geschwindigkeit. Die Anfrage muss einen Gleichheits- oder Bereichstest für ein indiziertes Feld im höchsten Segment enthalten, auf das in der Anfrage verwiesen wird. ON ist der Defaultwert.
Verwendet sequenziellen Datenabruf, es sei denn eine Anfrage gibt eine indizierte Ansicht an (TABLE FILE filename.indexed_fieldname) und enthält einen Gleichheitstest für indexed_fieldname. In diesem Fall wird automatisch indizierter Datenabruf durchgeführt.
Es wird auf die folgende Masterdatei in den nachfolgenden Beispielen verwiesen:
FILENAME=SALES,SUFFIX=FOC, SEGNAME=STOR_SEG,SEGTYPE=S1, FIELDNAME=AREA,ALIAS=LOC,FORMAT=A1,$ SEGNAME=DATE_SEG,PARENT=STOR_SEG,SEGTYPE=SH1, FIELDNAME=DATE,ALIAS=DTE,FORMAT=A4MD, $ SEGNAME=DEPT,PARENT=DATE_SEG,SEGTYPE=S1, FIELDNAME=DEPARTMENT,ALIAS=DEPT,FORMAT=A5,FIELDTYPE=I,$ FIELDNAME=DEPT_CODE,ALIAS=DCODE,FORMAT=A3,FIELDTYPE=I,$ FIELDNAME=PROD_TYPE,ALIAS=PTYPE,FORMAT=A10,FIELDTYPE=I,$ SEGNAME=INVENTORY,PARENT=DEPT,SEGTYPE=S1,$ FIELDNAME=PROD_CODE,ALIAS=PCODE,FORMAT=A3,FIELDTYPE=I,$ FIELDNAME=UNIT_SOLD,ALIAS=SOLD,FORMAT=I5,$ FIELDNAME=RETAIL_PRICE,ALIAS=RP,FORMAT=D5.2M,$ FIELDNAME=DELIVER_AMT,ALIAS=SHIP,FORMAT=I5,$
Die folgende Prozedur enthält einen Gleichheitstest für DEPT_CODE und PROD_CODE. DEPT_CODE wird verwendet für indizierten Abruf, da es sich in den höheren der verwiesenen Felder befindet.
SET AUTOINDEX=ON TABLE FILE SALES SUM UNIT_SOLD RETAIL_PRICE IF DEPT_CODE EQ 'H01' IF PROD_CODE EQ 'B10' END
Wenn Ihre TABLE-Anfrage einen Gleichheits- oder Bereichstest für mehr als ein indiziertes Feld im selben Segment enthält, verwendet AUTOINDEX den ersten Index, auf den in diesem Segment verwiesen wird, für den Abruf. Die folgende gespeicherte Prozedur enthält einen Gleichheitstest für zwei indizierte Felder. Da DEPT_CODE in der Masterdatei vor PROD_TYPE vorkommt, verwendet AUTOINDEX DEPT_CODE für den Abruf.
SET AUTOINDEX=ON TABLE FILE SALES SUM UNIT_SOLD AND RETAIL_PRICE IF PROD_TYPE EQ 'STEREO' IF DEPT_CODE EQ 'H01' END
Indizierter Abruf wird nicht aufgerufen, wenn der Gleichheits- oder Bereichstest für ein indiziertes Feld ausgeführt wird, das sich nicht im höchsten verwiesenen Segment befindet. Im folgenden Beispiel wird indizierter Abruf nicht durchgeführt, da die Anfrage einen Verweis auf AREA enthält, was ein Feld im Segment STOR_SEG ist:
SET AUTOINDEX=ON TABLE FILE SALES SUM UNIT_SOLD AND RETAIL_PRICE BY AREA IF PROD_CODE EQ 'B10' IF PROD_TYPE EQ 'STEREO' END
WebFOCUS |