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.  


Responder a