Página 1 de 1
Criar indices
Enviado: 21 Fev 2014 14:37
por Ricardo Sales Ribeiro
Olá amigos
Boa Tarde!
Gostaria de saber como executar um comando onde eu crio um índice, de um campo numérico, de tal forma que fique
em ordem decrescente, ou seja do maior para o menor.
Tenho um banco onde eu gero uma media, gostaria que esse banco ficasse por ordem de media, do maior para o menor.
Atenciosamente,
Criar indices
Enviado: 21 Fev 2014 15:48
por alxsts
Olá!
Precisa usar a função Descend()
Código: Selecionar todos
REQUEST DESCEND
FUNCTION Main()
Indexar()
USE Tabela Shared New
Tabela->( DbSetIndex( "Tabela" ) )
// Usar a função Descend() na pesquisa também
Tabela->( DbSeek(Descend( 876 ) ) )
? Tabela->Media
Tabela->( DbCloseArea() )
Return
//----------------------------------------------
FUNCTION Indexar()
USE Tabela Exclusive New
// Usar a função Descend() para criar indice decrescente
Index On Descend(media) To Tabela
Tabela->( DbCloseArea() )
Return
//----------------------------------------------
Criar indices
Enviado: 21 Fev 2014 16:29
por Ricardo Sales Ribeiro
Olá
Obrigado pela orientação e ajuda.
Atenciosamente
Criar indices
Enviado: 22 Fev 2014 12:09
por Eros
Pessoal, a solucão é colocar "REQUEST DESCEND" no ínício ?
Se SIM, por tabela, a solução para quem usa CDX seria a abaixo ?
REQUEST DBFCDX ou IDX ou NTX - Depende do uso
RDDSETDEFAULT("DBFCDX")
REQUEST DESCEND
So assim a função de indexar por ordem inversa vai funcionar.. caso contrario nao se consegue.
Ou DBSetOrder->
Criar indices
Enviado: 22 Fev 2014 13:29
por alxsts
Olá!
Sim Eros, tudo que você escreveu é verdadeiro.
A função Descend(), quando usada, é incorporada como atributo do arquivo de índice, para possibilitar a execução de REINDEX. Na hora da pesquisa é obrigatório utilizá-la, se você criou um índice usando ela. Tudo isto contribui para a degradação da performance do aplicativo pois leva mais tempo a cada atualização de índices (por exemplo, após incluir ou excluir registros).
Se precisar de ordenações descendentes, o ideal é usar a cláusula DESCENDING do comando INDEX ON:
Neste caso, Descend() também é incorporada como atributo do arquivo de índice, para possibilitar a execução de REINDEX, mas a atualização de índices é mais rápida.
Fonte.
Criar indices
Enviado: 22 Fev 2014 20:24
por Eolo
O REQUEST só é necessário se uma função NÂO está explícita e então vc precisa "request" (requerer) ao linkador para a incluir.
No exemplo abaixo:
1. se vc guardar os parâmetros dentro de uma string - pra usar depois a "&", a linkedição não vai considerar DESCEND(), que está "escondida" dentro da string, e vai dar pau no run time; 2. se DESCEND() estiver explícito, não precisa do REQUEST.
Código: Selecionar todos
* 1
request descend
indice="anome+descend(dtos(odata))"
index on &indice to lixo
* 2
* request descend // não precisa
inde on anome+descend(dtos(odatv))+strzero(ovalo,15,2) to blabla