De fato ficou contraditório.
Mas o fato é que eu ainda preciso definir bem o que realmente é necessário.
Veja, neste primeiro caso (marca='V')
select codigo,max(datahora) as data,nritem from acoes use index (coddt) where marca='V' and hrvisto<>91234 and datahora>'"+dtsql(date()-20)+"' group by codigo order by data
o mais provável é que seja suficiente trazer os dados dos últimos 20 dias (talvez até menos). Mas não será sempre assim. É possÃvel que não tenha nenhuma cotação cadastrada nos últimos 20 dias (ou até em perÃodo bem maior), e mesmo assim o código deve constar na lista (aliás, neste caso, com maior razão).
Ainda não pensei num critério ideal para restringir a pesquisa.
O que eu preciso é de uma lista simples dos códigos que não tenham cotação cadastrada nos últimos minutos ou nas últimas horas (dependendo da marca).
Antes a consulta estava mais complexa, verificando isso no próprio select. Agora eu simplifiquei o select, como acima, e verifico localmente depois a hora da última cotação.
Como poderia melhorar isso?