-----Mensagem original-----
De: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] Em nome de Evandro
Ricardo Silvestre
Enviada em: quarta-feira, 28 de maio de 2008 09:13
Para: Comunidade PostgreSQL Brasileira
Assunto: Re: [pgbr-geral] RES: Tabelas temporárias

Renato wrote:
> -----Mensagem original-----
> De: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] Em nome de Evandro
> Ricardo Silvestre
> Enviada em: terça-feira, 27 de maio de 2008 17:05
> Para: Comunidade PostgreSQL Brasileira
> Assunto: Re: [pgbr-geral] Tabelas temporárias
>
>   
>> Renato wrote:
>>     
>>> Boa tarde
>>>
>>> Tenho uma View, que faz consultas em diversas tabelas, com joins,
unions,
>>> etc etc, que localmente demora as vezes até 2 segundos pra carregar, mas
>>>       
> que
>   
>>> é usada constantemente, em um menu, pra verificar se o usuário tem
>>>       
> permissão
>   
>>> pra acessar tal tabela ou form, tal e tal.
>>>
>>> Pra reduzir (e muito) essa "demora" fiz o seguinte. Ao abrir a
aplicação,
>>>       
> e
>   
>>> iniciar uma sessão, Dou instrução pra criar uma tabela temporária
baseada
>>> naquela view, e dessa forma quando preciso verificar tal permissão, leio
>>>       
> a
>   
>>> temp (e não a view), de forma instantânea, mesmo numa conexão lenta.
>>>
>>> Porém percebi, pelo PGadmin que estão se acumulando schemas chamados
>>> pg_temp_1, pg_temp_2, etc, que sei que são usados por essas tabelas
>>> temporárias, e percebi que estão vazios. Minha pergunta é, esses schemas
>>> ocupam espaço, ou com o passar do tempo e consequentemente o acúmulo
>>>       
> deles,
>   
>>> interfere em alguma coisa? Essa coisa de criar TEMP's, com propósitos
>>>       
> como o
>   
>>> meu, é uma boa prática?
>>>       
>> Que linguagem de programação está utilizando? Uma sugestão de uma boa 
>> prática é manter na memória da máquina local, já que você precisa da 
>> informação diversas vezes ou manter em um arquivo local (economiza 
>> memória). Na hora que abre a aplicação gera o arquivo, na hora que fecha 
>> apaga o arquivo. Você terá apenas 1 acesso ao banco.
>>
>>
>> Evandro
>>     
>
> Uso Delphi 2007 com Zeos. A tal View além de usar instruções de SQL,
também
> chama funções feitas em plpgsql.
>
> Obrigado Evandro, pela sugestão, muito bem vinda!
>   
Faça o seguinte, carregue o resultado da View no cds.
Depois faça um cds.SaveToFile para salvar no disco.
Sempre que quiser recuperar, basta um cds.LoadFromFile

Evandro


Evandro
Sua sugestão é muito boa, mas eu não apontei um detalhe importante, o tal
menu tem submenus, 
que são todos montados em modo execução, quando clico no item do menu
principal, conforme a consulta que faço na tal tabela temporária. Tipo:

SELECT * FROM tabela_temporária WHERE id_menu = 1; -- 1 para o 1º submenu, 2
para o 2º submenu, e assim por diante

E assim trago somente os valores pra montar os itens do submenu clicado.

Minha única preocupação é: 
1 - do jeito que faço hoje, comprometo algum desempenho, no geral?
2 - será que a longo prazo eu não deixaria uma quantidade de "lixo"
(pg_temp's)? Ou o vacuum ou autovacuum faria essa limpeza pra mim?


----------------------------------------------------------------------------------
Esta mensagem foi verificada pelo sistema de Anti-virus da SJB Solados.

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a