Re: [firebase-br] Chave primária em ordem descendente
schiavor
schiavor em uol.com.br
Qui Fev 23 14:39:56 -03 2006
Eu preciso do registro mais recente, no meu caso o maior código é o mais recente, porém quando eu alterei a consulta para isto:
select CAMPOS from TABELA where CODIGO = (select MAX(CODIGO) from TABELA)
O desempenho caiu muito se comparado com o select original:
select first 1 CAMPOS from TABELA
Estou para inverter a ordenação do campo chave CODIGO de Ascendente para Descendente, assim poderei continuar utilizando o "select first 1 CAMPOS from TABELA" com o mesmo desempenho, mas não sei se vai haver perda de performance no momento de inserção, pois com o campo ordenado de forma Descendente os novos registros devem ser inseridos no inicio e não mais ao final da tabela.
Não sei como a engine do banco trata as inserções em campos Descendentes, sei que para fazer esta inserção fisica num arquivo o processo consome muitos recursos, só não sei se o Firebird tem uma mecânica diferente para lidar com isto.
[ ]'s Rodrigo Schiavo
> Não seria só
>
> SELECT MAX(CODIGO) FROM TABELA ? // isso ja traz o maior
>
> SELECT MIN(CODIGO) FROM TABELA ? // isso ja traz o menor
>
> Agora se vc quer o mais atual sem precizar ser o maior então vc deve se
> basear em um campo DATA e um TIME ou DateTime
>
> SELECT MAX(DIA_CAD), MAX(HORA_CAD) FROM TABELA // traz o utlimo dia e ultima
> hora
>
> Senão não vai dar :)
>
>
> _______ ____
> |c:\ | ||--||
> | | |____|
> |_______| |º |
> __^__ |o |
> /_____\ |____|
> ----------------------
> Marcelo Silva
> (11) 9693-4251
> MSN: marcvan em ig.com.br
>
> ----- Original Message -----
> From: "Tricon - Paulo"
> To: "FireBase"
> Sent: Thursday, February 23, 2006 11:53 AM
> Subject: Re: [firebase-br] Chave primária em ordem descendente
>
>
> Quantos registros tem essa tabela?
>
> ----- Original Message -----
> From: "schiavor"
> To: "lista"
> Sent: Thursday, February 23, 2006 11:45 AM
> Subject: Re: [firebase-br] Chave primária em ordem descendente
>
>
> Assim funcionou mas tem um desempenho terrivel por causa do order by.
>
> [ ]'s Rodrigo Schiavo
>
> > Desculpa use assim
> >
> > select campos from tabela where codigo = (select first 1 codigo from
> > tabela
> > order by codigo desc)
> >
> > ----- Original Message -----
> > From: "schiavor"
> > To: "lista"
> > Sent: Thursday, February 23, 2006 11:17 AM
> > Subject: [firebase-br] Chave primária em ordem descendente
> >
> >
> > Bom dia,
> >
> >
> > Tenho uma tabela onde são feitas vária inserções/consultas/exclusões, o
> > total de inserções e remoções deve ser algo em torno de 200.000 por dia.
> >
> > Esta tabela possui um campo código que é chave primária e esta ordenado de
> > forma Ascendente, na consulta eu utilizo um select first, ou seja sempre
> > vou
> > estar pegando o menor código, ou o registro mais velho.
> > Preciso a partir de agora pegar o registro mais atual, modifiquei a
> > consulta
> > da seguinte forma:
> >
> > select CAMPOS from TABELA where CODIGO = (select MAX(CODIGO) from TABELA)
> >
> > Esta consulta fez com que houvesse uma grande perda de desempenho do
> > sistema.
> >
> > Uma alternativa a esta consulta seria utilizar:
> >
> > select First 1 CAMPOS from TABELA order by CODIGO Desc
> >
> > O que ao meu ver vai ter um desempenho infinitamente inferior
> >
> > Pensei em alterar o índice da coluna chave primária (CODIGO) para
> > Descendente ao invés de Ascendente. Com isto não seria necessário alterar
> > minha consulta, porém não sei se o Banco de Dados vai perder desempenho na
> > inserção. O que vocês podem me dizer sobre isto?
> >
> >
> >
> > Grato pela atenção.
> >
> > [ ]'s Rodrigo Schiavo
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> > Para editar sua configuração na lista, use o endereço
> > http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> > Para editar sua configuração na lista, use o endereço
> > http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
>
> --
> No virus found in this incoming message.
> Checked by AVG Free Edition.
> Version: 7.1.375 / Virus Database: 267.15.11/264 - Release Date: 17/02/2006
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista