Então Rubem, eu já fiz isso, criei os índices em cada campo de telefone das tabelas, mas nada mudou no plano... é como se a view ignorasse os meus índices... será que tenho que criar de outra forma?
veja abaixo o plano que está sendo executado... Comando executado: select * from vw_telefones where telefone like '%4646456%' plano retornado: PLAN (VW_TELEFONES ARQCONTATOS NATURAL) PLAN (VW_TELEFONES ARQCONTATOS NATURAL) PLAN (VW_TELEFONES ARQCONTATOS NATURAL) PLAN (VW_TELEFONES ARQCLIENTES NATURAL) PLAN (VW_TELEFONES ARQCLIENTES NATURAL) PLAN (VW_TELEFONES ARQCLIENTES NATURAL) PLAN (VW_TELEFONES ARQEMPRESAS NATURAL) PLAN (VW_TELEFONES ARQEMPRESAS NATURAL) PLAN (VW_TELEFONES ARQEMPRESAS NATURAL) PLAN (VW_TELEFONES ARQEMPRESAS NATURAL) PLAN (VW_TELEFONES ARQEMPRESAS NATURAL) PLAN (VW_TELEFONES ARQEMPRESAS NATURAL) PLAN JOIN (VW_TELEFONES USU NATURAL, VW_TELEFONES UTE INDEX (PK_ARQUSU_TELEFONES)) PLAN (VW_TELEFONES ARQCLI_FOR INDEX (RDB$PRIMARY63)) PLAN (VW_TELEFONES ARQCLI_FOR INDEX (RDB$PRIMARY63)) PLAN (VW_TELEFONES ARQCLI_FOR INDEX (RDB$PRIMARY63)) Marcelo. --- Em delphi-br@yahoogrupos.com.br, "Rubem Nascimento da Rocha" <[EMAIL PROTECTED]> escreveu > > > Faz um SELECT nessa View usando um filtro (cláusula WHERE) pro resultado ser > relativamente pequeno. Analisa o plano de execução e daí, com base nisso, > cria índices apropriados pras tabelas envolvidas na VIEW. Sds. > > >From: "Marcelo Alves" <[EMAIL PROTECTED]> > >Reply-To: delphi-br@yahoogrupos.com.br > >To: delphi-br@yahoogrupos.com.br > >Subject: [delphi-br] Performance em View > >Date: Wed, 21 Mar 2007 01:17:40 -0000 > > > >Pessoal, > > > >Tenho uma View de Telefones de vários cadastros, ou seja, a junção > >dos campos de telefone de algumas tabelas > > > >Ex: > > > >TABELA CLIENTES > >ID > >FONE1 > >FONE2 > >FONE3 > > > >TABELA EMPRESAS > >ID > >FONE1 > >FONE2 > >FONE3 > >FONE4 > > > > > >Na criação da View faço vários unions conforme abaixo > > > >SELECT ID, FONE1, 'CLIENTES' FROM CLIENTES UNION SELECT ID, > >FONE2, 'CLIENTES' FROM CLIENTES UNION SELECT ID, FONE3, 'CLIENTES' > >FROM CLIENTES UNION SELECT ID, FONE1, 'EMPRESAS' FROM EMPRESAS UNION > >SELECT ID, FONE2, 'EMPRESAS' FROM EMPRESAS UNION SELECT ID, > >FONE3, 'EMPRESAS' FROM EMPRESAS UNION SELECT ID, FONE4, 'EMPRESAS' > >FROM EMPRESAS > > > >No caso tem tabelas que possuem mais telefones que outras conforme o > >exemplo acima.. > > > >Meu problema está sendo a performance porque hoje a view retorna mais > >de 170.000 telefones e eu tenho uma pesquisa de Telefones no sistema, > >o que se tornou muito lenta, chegando até a travar o servidor quando > >executada.. No caso faço a pesquisa direto na view com utilizando > >like... Criei índices nos campos de telefone das tabelas utilizadas > >na View, mas não obtive nenhuma melhora de performance visto que os > >planos usados são NATURAL para todas as tabelas, ou seja, a view não > >se utilizou dos índices... > > > >Existe algo que eu possa fazer para melhorar isso??? > > > >Agradeço desde já a ajuda de Todos... > > > >Marcelo. > > > > > > _________________________________________________________________ > MSN Busca: fácil, rápido, direto ao ponto. http://search.msn.com.br >