Renato wrote: > -----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? > Muito acesso ao banco não é bom. Compromete o desempenho sim. Imagine que no momento que o usuário estiver procurando algo no menu ele irá abrir vários menus e vários submenus ate encontrá-lo. Se a cada momento você lançar uma consulta ao banco terá uma grande carga, por mais rápido que a consulta seja. Recomendo você trazer uma arvore completa com o menu e submenus. Ao invés de fazer 1 consulta para o menu e 1 para os submenus, faça uma consulta que traga tudo! Ao invés de fazer pequenas consultas várias vezes, faça 1 grande consulta uma unica vez! Também não acho uma boa idéia montar em tempo de execução o menu como você faz. Pense, ocorre muitas alterações no menu ou sempre é o mesmo? se for sempre o mesmo pq toda a vez vc vai desenhá-lo? Acho excelente ter menus dinâmicos, mas recomendo que esse menu seja criado *completamente* no momento da abertura da aplicação(no OnCreate). Caso haja alteração no menu basta o usuário fechar e abrir a aplicação novamente. Recomendo que você repense essa rotina e reformule-a.
Evandro _______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral