desculpe nos eschemas do banco! ----- Original Message ----- From: "Joao" <[EMAIL PROTECTED]> To: "Grupo de Usuários do PostgreSQL no Brasil" <[email protected]> Sent: Friday, August 25, 2006 4:16 PM Subject: Re: [PostgreSQL-Brasil] RES: [postgresql-br] Views com dblink AGAIN
(reconstruir os selects para fazer uso dos schemas), acho que nao precisa sete a variavel search path a menos que tenham tabelas com nomes iguais no banco ----- Original Message ----- From: "Marcelo Magno" <[EMAIL PROTECTED]> To: <[email protected]> Sent: Friday, August 25, 2006 4:11 PM Subject: [PostgreSQL-Brasil] RES: [postgresql-br] Views com dblink AGAIN Ola pessoal, fiquei um tempo sem voltar nesse projeto e agora precisarei retomar o mesmo e acertar essas beiradas. Segundo o amigo Steve sugeriu abaixo, fui procurar sobre schemas, mas me deparei com o problema da compatibilidade do codigo que eu já tenho rodando no momento. Se eu fisesse uso de varios schemas para apenas 1 banco, colocando 1 schema para cada um dos bancos antigos nesse novo banco, eu teria o problema de reescrever todo o código que existe nesses sistemas legados (reconstruir os selects para fazer uso dos schemas), e isso não é uma opcao pra mim. Existe alguma outra maneira usando schemas que eu não esteja vendo? Algo sem ter que reescrever os selects, inserts e afins...? Outros 2 amigos, o Euler Taveira e o Flavio Brito, me pediram pra tentar exemplificar mais... Vou tentar faze-lo. Hoje eu tenho 2 sistemas distintos, jah existentes em que foi necessario uma integracao. Como eu fiz: eu fiz dentro de um banco algumas views usando o dblink, e apontado para a tabela no outro banco. Exemplo da view: CREATE OR REPLACE VIEW clientes AS SELECT clientes.mneu_cli, clientes.nome_cli FROM dblink('dbname=sbd95_teste'::text, 'select * from clientes'::text) clientes(mneu_cli character varying(4), nome_cli character); O grande problema eh que 2 dessas tabelas incluidas nas views tem uma quantidade grande de tuplas (cerca de 800 mil) e o processo de join de uma tabela do banco atual com a view do outro banco esta deveras demorado. vou colocar um exemplo de uma query, e o seu explain... Pra voces terem uma ideia, as views com o dblink são: files e clientes, clientes eh pequena, cerca de mil tuplas, já a tabela files tem cerca de 55 mil tuplas. SELECT * FROM files LEFT OUTER JOIN clientes ON clientes.mneu_cli = files.mneu_cli LEFT OUTER JOIN recebimentoFiles ON files.file = Recebimentofiles.file LEFT OUTER JOIN recebimento ON Recebimento.pkRecebimento = recebimentoFiles.fkRecebimento INNER JOIN empresa ON clientes.logo = empresa.logo INNER JOIN empresa_conta ON empresa.pk_empresa = empresa_conta.fk_empresa "Nested Loop (cost=2375.11..31523.83 rows=252 width=4410)" " Join Filter: ("outer".logo = ("inner".logo)::numeric)" " -> Nested Loop Left Join (cost=2370.03..30257.54 rows=6306 width=4004)" " -> Hash Left Join (cost=2370.03..11175.59 rows=6306 width=3817)" " Hash Cond: (("outer".file)::text = ("inner".file)::text)" " -> Hash Join (cost=15.00..330.00 rows=5000 width=3721)" " Hash Cond: (("outer".mneu_cli)::text = ("inner".mneu_cli)::text)" " -> Function Scan on dblink clientes (cost=0.00..12.50 rows=1000 width=3027)" " -> Hash (cost=12.50..12.50 rows=1000 width=694)" " -> Function Scan on dblink files (cost=0.00..12.50 rows=1000 width=694)" " -> Hash (cost=1646.62..1646.62 rows=40162 width=96)" " -> Seq Scan on recebimentofiles (cost=0.00..1646.62 rows=40162 width=96)" " -> Index Scan using recebimento_pkrecebimento on recebimento (cost=0.00..3.01 rows=1 width=187)" " Index Cond: (recebimento.pkrecebimento = "outer".fkrecebimento)" " -> Materialize (cost=5.09..5.17 rows=8 width=406)" " -> Hash Join (cost=1.10..5.08 rows=8 width=406)" " Hash Cond: ("outer".fk_empresa = "inner".pk_empresa)" " -> Seq Scan on empresa_conta (cost=0.00..3.60 rows=60 width=106)" " -> Hash (cost=1.08..1.08 rows=8 width=300)" " -> Seq Scan on empresa (cost=0.00..1.08 rows=8 width=300)" Agradeço qualquer luz que voces possam me dar sobre esse problema de selecionar valores em um modelo cross table. Desde já peço desculpas pelo email comprido. Abracos Marcelo Magno -----Mensagem original----- De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Em nome de Steve Howe Enviada em: quarta-feira, 9 de agosto de 2006 12:06 Para: [EMAIL PROTECTED] Assunto: Re: [postgresql-br] Views com dblink Hello Marcelo, > Tenho 2 bancos distintos em um servidor posrgresql 8.1.4 em que me > surgiu a necessidade de usar tabelas de um banco juntamente com > tabelas do outro banco. > > Minha primeira ideia foi fazer views usando o dblink. Beleza, funciona. > Mas como essas tabelas são extensas (muitas tuplas) e pela lentidão > dada pelo join de uma tabela com uma views (no analyse esse eh o maior > custo), eu estou tendendo a acreditar que ele não esteja nem ligando > para os indices. > > Existe alguma alternativa diferente de atacar esse problema ? Existe > alguma forma de fazer uso dos indices da tabela que esta no outro banco? Tente incluir o segundo banco num novo schema dentro do primeiro banco. -- Best Regards, Steve Howe -- Grupo PostgreSQL Brasil. Fundado em 1999. Mensagens para: [EMAIL PROTECTED] Historico: http://br.groups.yahoo.com/group/postgresql-br/messages Moderadores: Ismael Amorim, Leonardo Cezar. Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/postgresql-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html _______________________________________________ Grupo de Usuários do PostgreSQL no Brasil Antes de perguntar consulte o manual http://pgdocptbr.sourceforge.net/ Para editar suas opções ou sair da lista acesse a página da lista em: http://pgfoundry.org/mailman/listinfo/brasil-usuarios _______________________________________________ Grupo de Usuários do PostgreSQL no Brasil Antes de perguntar consulte o manual http://pgdocptbr.sourceforge.net/ Para editar suas opções ou sair da lista acesse a página da lista em: http://pgfoundry.org/mailman/listinfo/brasil-usuarios _______________________________________________ Grupo de Usuários do PostgreSQL no Brasil Antes de perguntar consulte o manual http://pgdocptbr.sourceforge.net/ Para editar suas opções ou sair da lista acesse a página da lista em: http://pgfoundry.org/mailman/listinfo/brasil-usuarios
