Automatischer indizierter Abruf

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 .


Nach oben

x
Syntax: Indizierten Abruf verwenden
SET AUTOINDEX = {ON|OFF}

Hierbei gilt:

ON

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.

OFF

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.


Nach oben

x
Referenz: Verwendungshinweise für indizierten Abruf


Beispiel: Indizierten Abruf verwenden

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