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