Tanto o tamanho da chave quanto a posição da chave relativa são recuperados.
Por exemplo, as linhas a seguir definem um layout de registro para keypos=10 e keylen=4:
01 REC.
04 HEADER PIC X(10).
04 KEY.
08 KEY1 PIC 99.
08 KEY2 PIC 99.
04 REST PIC X(200).
Para que a otimização funcione, inclua KEY1 na cláusula WHERE.
Use informações da chave para acelerar o processamento de cláusulas WHERE, que especificam a otimização.
Formatos diferentes da cláusula WHERE produzem resultados diferentes.
Line 1 SELECT * FROM TEST.VSAM1.TAB WHERE (KEY1 > 50) AND (KEY1 < 90)
A linha 1 é convertida para:
(50 < KEY1 < HIGH-HALUES) AND (LOW-VALUES < KEY1 < 90)
O exemplo a seguir gera os mesmos resultados que o exemplo da Linha 1, mas com um tempo decorrido diferente:
Line 2 SELECT * FROM TEST.VSAM1.TAB WHERE (KEY1 > 50 AND KEY1 < 90)
A linha 2 é convertida para:
(KEY1 > LOW-VALUES AND KEY1 < HIGH-HALUES)
Esse formato ainda é tecnicamente otimizado, mas, quando o arquivo é processado, o início da leitura é posicionado em LOW-VALUES e lê até HIGH-VALUES, o que não é ideal.
A linha 2 é a sintaxe preferida. Essa sintaxe posiciona o arquivo no registro 50 e lê dados até KEY1 ser maior ou igual a 90.
A otimização é usada para o posicionamento de chaves, os dados são selecionados em relação à cláusula WHERE para verificar se os registros corretos são filtrados.
Se você especificar um valor maior que 0 na caixa
Ignorar Primeiros Registros do Arquivo
na caixa de diálogo
Método de Acesso KSDS
, a instrução SELECT não será otimizada mesmo que você especifique KEY1.