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