Boa tarde.
Eu utilizo indices com a função dtos no Mediator.
No mediator Client tem os programas ntx2med ou cdx2med.
Utilize eles para exportar a estrutura de indices das suas tabelas dbf para o Mysql.
Exemplo
ntx2med <banco> <indices>..,
ou
cdx2med <banco> <indices>
Quando sou obrigado a criar um indice novo como uso medcdx eu crio a tag depois rodo o cdx2med lembrando que para isso o acesso ao banco é exclusivo, eu tenho um diretório com os banco dbf e indices cdx utilizados no mediator, assim altero primeiro neles depois exporto pro mediator.
Ao importar um arquivo dbf para o Mediator a ordem é esta:
- dbf2med <banco> - Cria Estrutura
- ntx2med ou cdx2med <banco> <indices> - Cria os indices
- dat2med - Importa os registros
Nunca crie os indices depois que estiver com os registros levará relativamente mais tempo para criá-los.
No Mysql vc pode usar a função date_format(<data>,'%Y%m%d') dessa forma vc pode comparar com variaveis com a função dtos().
Em relátorios filtrados ou consultas em bancos grandes prefira usar instruções Sql como exemplo abaixo
Exemplo Mediator xharbour
Código: Selecionar todos
cVar := dtos(date())
cCmd := "'"+"SELECT CODIGO,DATA FROM BANCO where date_format(DATA'%Y%m%d') >= '"+cVar+"'"
use medquery as &cCmd New ScrollAble
Se você estiver usando o Mysql para interagir informações com site.
Você terá que criar indices no Mysql Query Browser.
Visualize como os indices são criados com o Mediator vá no Mysql Query Browse
show index from (seubanco)
Você verá que os indices são criados amarrados com o campo Recno, esse campo correponde a posicao do registro quando vc utilizava dbf, se você rodar uma instrução sql com filtro por exempo num site esses indices não te ajudarão e poderão deixar a apresentação do resultado demorada.
Para criar os indices no Mysql
Create index <nomeindice> on <banco> (campos)
Nos meus sites como não apresento visualização detalhada é sim sintética mais voltada a estatistica.
Uso mtos selects com group by ...having...
Se você usar mtos relacionamentos inner join...left join...e os campos relacionais não tiverem indices...você notará a lerdeza que é o trem...
Tipo...
Código: Selecionar todos
select a.codigopro, b.descricao, sum(qtdvendida) from vendas a
inner join on tabeladeproduto b on (a.codigopro=b.codigopro)
group by a.codigopro,b.descricao
having sum(qtdvendida) > 100
order by b.descricao
Mostrar produtos que venderam mais de 100 unidades relacionando a tabela de vendas com a tabela de produtos....