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
>


Responder a