Alow, Rodolfo.
Pelo pouco que sei, você só ativa o RUSHMORE quando utiliza a clausula WHERE nas suas consultas. Assim, no primeiro exemplo, como você não utilizou WHERE o RUSHMORE não foi ativado, já no outro que você utilizou foi.
Aqui, na minha classe que abre as tabelas, isto é, que lê um DBF gerando um cursor pra eu trabalhar tenho um arquivo chamado NOMES e nele um indice pelo campo I_CODIGO. Pra abrir esse arquivo tenho que utilizar a clausula WHERE pra não perder o RUSHMORE.
Veja:
Desta maneira transfiro o arquivo inteiro pro cursor perdendo o RUSHMORE
select * from NOMES into cursor curNomes
Desta maneira transfiro o arquivo inteiro pro cursor NÃO perdendo o RUSHMORE
select * from NOMES where i_codigo > 0 into cursor curNomes
O segredo está em
"where i_codigo > 0"