Guest webroger Postado Julho 31, 2008 Denunciar Share Postado Julho 31, 2008 Ola pessoal, criei uma view com mais de 600 mil registros..preciso fazer buscas nela, mas está muito lenta... porem a minha view não tem nenhum indice... ou seja, a minha query esta varrendo a tabela inteira, causandomuita lentidao...CREATE OR REPLACE view por_cepasselect id_cep, rua. id_rua, cep_cep, id_bairro_ini, id_bairro_fin, nomec_rua, compl_rua, nome_bairro, cidades.id_cidades, estados.id_estados, nome_cidades, sigla_estados from cepinner join rua on cep.id_rua = rua.id_ruainner join bairro on rua.id_bairro_ini = bairro.id_bairroinner join cidades on bairro.id_cidades = cidades.id_cidadesinner join estados on cidades.id_estados = estados.id_estados order by id_bairro_ini, nome_bairro, nome_cidadesPRECISO CRIAR O INDICE NO CAMPO cep_cep e nos campos do inner join...então estou tetando criar indices nos campos, mas ocorre erro: 'a tabela por_cep não é uma tabela base' estou usando a engine MyIsam para a viewESPERO A AJUDA DOS COLEGAS URGENTE...DESDE já AGRADEÇO. ABRAÇOSWEBROGER Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Julho 31, 2008 Denunciar Share Postado Julho 31, 2008 Oi,'webroger' O MySQL não permite a criação de índices para views. Ver Manual Mysql Versão 5, Capítulo 19 Seção 19.2. CREATE VIEW Syntax.Solução: Usar diretamente o select (de forma otimizada) que serviu de base para a criação da view. Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Agosto 1, 2008 Denunciar Share Postado Agosto 1, 2008 Oi,'webroger' Mais uma recomendação. Estude sobre Views Materializadas. Este link tem o conceito do que é uma View Materializada e dentro dele tem links de como montar estes tipos de views. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest webroger
Ola pessoal, criei uma view com mais de 600 mil registros..
preciso fazer buscas nela, mas está muito lenta... porem a minha view não tem nenhum indice... ou seja, a minha query esta varrendo a tabela inteira, causando
muita lentidao...
CREATE OR REPLACE view por_cep
as
select id_cep, rua. id_rua, cep_cep, id_bairro_ini, id_bairro_fin, nomec_rua, compl_rua, nome_bairro, cidades.id_cidades, estados.id_estados, nome_cidades, sigla_estados
from cep
inner join rua on cep.id_rua = rua.id_rua
inner join bairro on rua.id_bairro_ini = bairro.id_bairro
inner join cidades on bairro.id_cidades = cidades.id_cidades
inner join estados on cidades.id_estados = estados.id_estados order by id_bairro_ini, nome_bairro, nome_cidades
PRECISO CRIAR O INDICE NO CAMPO cep_cep e nos campos do inner join...
então estou tetando criar indices nos campos, mas ocorre erro: 'a tabela por_cep não é uma tabela base'
estou usando a engine MyIsam para a view
ESPERO A AJUDA DOS COLEGAS URGENTE...
DESDE já AGRADEÇO. ABRAÇOS
WEBROGER
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados