Vou tentar explicar melhor:
- Se marca é sempre "V", por que ordenar por marca, e ainda mais DESC?
Na tabela a marca não é sempre V, tem várias; nessa consulta que eu coloquei de exemplo, a marca é V, mas também consulto por outras marcas, e às vezes por mais de uma ao mesmo tempo, razão pela qual coloquei order by marca desc.
- max(dtcotacao) o que pretende com isto no order by?
Aqui também, às vezes a consulta retorna dtcotacao diferentes, razão pela qual coloquei order by max(dtcotacao), para ordenar pela data.
- Explique melhor isto: "não tenham tido nenhum registro nos últimos minutos"
É assim: meu sistema está a todo momento inserindo registros na tabela, referente a códigos diversos, com data e hora da inserção. Então, esta consulta precisa retornar os códigos que não tiveram inserção de registros nos últimos minutos (neste caso), ou nas últimas horas ou nos últimos dias (em consultas semelhantes). Pra isso é que eu fiz a subquery, pra primeiro verificar quais códigos teve inserção de registros nos últimos minutos, e depois verificar os códigos que não estão entre estes últimos.
- o motivo da subquery...
O motivo é justamente este explicado acima: verificar primeiro os códigos que tiveram inserção de registros nos últimos minutos, e daà extrair os códigos que não tiveram inserção.
- Disse que tem Ãndice pelo campo codigo. Reveja este Ãndice ou crie um outro com codigo + marca + dtcotacao (ou na ordem que for preciso)
Boa noite, cria um arquivo de index da coluna marca : create index marca_cdx on acoes( marca );. Pode resolver.
Se está pesquisando uma determinada data, indice por data.
Realmente, faltava esse Ãndice. Criei agora.
Uma dúvida que sempre tenho: é preciso colocar "use index" na consulta? Faz diferença na velocidade da consulta?
- Tente fazer uma query única
Esta eu não entendi. A query já não é única?
- Notei que o campo hora é separado do campo data e do tipo char. Em tabelas futuras, procure trabalhar com campos datetime. facilita muito cálculos de intervalo.
Veja: MySQL Date and Time Functions
Inicialmente eu tinha colocado com datetime, mas tive bastante dificuldade em lidar com ele, por falta de conhecimento, por isso separei os campos. Terei que estudar melhor sobre isso para aprender a lidar bem com esse campo. Farei isso.
Procure abrir tópicos novos no respectivo fórum. Este tópico deveria estar na seção SQL ou Banco de Dados.
Desculpe, realmente errei.
Para o horário, colocar na pesquisa o horário já convertido, senão tem que fazer a conta com cada um pra saber qual atende à pesquisa.
Aliás, porque não horario > '10:00:00'
Isso funcionaria? Em harbour acho que não funciona. Mas vou testar assim.