Re: [firebase-br] Chave primária em ordem descendente

Marcelo Silva marcvan em ig.com.br
Qui Fev 23 18:38:32 -03 2006


Diz uma coisa, você ja tentou dar um Select MAX primeiro e depois dar um 
select com o resultado ?

Codigo = SELECT MAX(CODIGO) FROM TABELA

SELECT CAMPOS FROM TABELA WHERE (CODIGO = Codigo)

Será que não va mais rapido apesar de ser dois selects ?


    _______    ____
   |c:\    |  ||--||
   |       |  |____|
   |_______|  |º   |
     __^__    |o   |
    /_____\   |____|
----------------------
Marcelo Silva
(11) 9693-4251
MSN: marcvan em ig.com.br



----- Original Message ----- 
From: "schiavor" <schiavor em uol.com.br>
To: "lista" <lista em firebase.com.br>
Sent: Thursday, February 23, 2006 2:39 PM
Subject: Re: [firebase-br] Chave primária em ordem descendente


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
>
______________________________________________
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






Mais detalhes sobre a lista de discussão lista