Récupération indexée automatique

Comment :

Référence :

La récupération indexée automatique (AUTOINDEX) optimise la vitesse de récupération de données dans les sources de données FOCUS. Afin de pouvoir profiter de la récupération indexée automatique, une requête TABLE doit contenir un test d'égalité ou de plage sur un champ indexé dans le plus haut segment référencé dans la requête.

Cette méthode n'est pas prise en charge si :

Pour des informations relatives à AUTOINDEX, consultez Développement d'applications de reporting .


Haut de page

x
Syntaxe : Utiliser la récupération indexée
SET AUTOINDEX = {ON|OFF}

où :

ON

utilise la récupération indexée pour optimiser la vitesse, si possible. La requête doit contenir un test d'égalité ou de plage sur un champ indexé dans le plus haut segment référencé dans la requête. ON est la valeur par défaut.

OFF

utilise la récupération de données séquentielle, à moins qu'une requête ne spécifie une vue indexée (TABLE FILE filename.indexed_fieldname) et qu'il ne contienne un test d'égalité sur indexed_fieldname. Dans ce cas, la récupération de données indexée s'effectue par défaut.


Haut de page

x
Référence : Notes sur la récupération indexée


Exemple : Utilisation de la récupération indexée

Le fichier Master présenté ci-après est référencé dans les exemples suivants :

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,$

La procédure suivante contient un test d'égalité sur les segments DEPT_CODE et PROD_CODE. DEPT_CODE est utilisé pour la récupération indexée car il se trouve dans le plus haut segment des segments référencés.

SET AUTOINDEX=ON
TABLE FILE SALES
SUM UNIT_SOLD RETAIL_PRICE
IF DEPT_CODE EQ 'H01'
IF PROD_CODE EQ 'B10'
END

Si votre requête TABLE contient un test d'égalité ou de plage visé à plusieurs champs indexés dans le même segment, AUTOINDEX utilise le premier index référencé dans ce segment pour la récupération. La procédure stockée suivante contient un test d'égalité sur deux champs indexés. Puisque DEPT_CODE apparaît avant PROD_TYPE dans le fichier Master, AUTOINDEX utilise DEPT_CODE pour la récupération.

SET AUTOINDEX=ON
TABLE FILE SALES
SUM UNIT_SOLD AND RETAIL_PRICE
IF PROD_TYPE EQ 'STEREO'
IF DEPT_CODE EQ 'H01'
END

La récupération indexée n'est pas mise en œuvre si le test d'égalité ou de plage s'effectue par rapport à un champ indexé qui ne réside pas dans le plus haut segment référencé. Dans l'exemple suivant, la récupération indexée ne s'effectue pas, car la requête contient une référence au champ AREA, qui se trouve dans le segment STOR_SEG :

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