Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Junior Simões

Consulta a banco muito lenta

Recommended Posts

Galera eu estou com um problema , gostaria de ver se vocês podem me ajudar com isto.Tenho um banco de dados de cadastro; no ato do cadastro a consulta feita em 5 tabeles diferentes a partir de combobox, esta tabela estão ligadas através de chave primaria e chave estrangeira, o problema é que a pagina se tornou tão lenta a ponto de não carregar, eu gostaria de saber se tem alguma forma de consertar isto, alguem pode me dar um apoio..flw galera um abraço !!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigão,

 

Observe algumas coisas nesse seu ambiente.

 

-> Quais são os tipos de tabelas que você está utilizando?

-> Você já observou os índices que são utilizados pela consulta?

-> Tem índices setados nos campos que entram na cláusula ORDER BY e índices setados para campos que estão sendo utilizados pela cláusula WHERE?

 

... engine ou table type das tabelas:

 

SHOW TABLE STATUS;

 

... cheque os índices das tabelas:

 

SHOW INDEX FROM <nome_tabela>;

 

Continue postando que vamos te dando as barbadas. . .abração!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

-> tipo de tabela utilizada : Inoodb

 

- > Index_type em todos campos -> BIREE

 

Não tem indices setados no campos utilizados pela clausula where.

 

Segue a forma que fiz a tabela:

 

create table cadastro (idCadastro int(11) not null auto_increment,sentido char(32),data date,pracaPedagio char(32),tipodeVeiculo char(32),arrecadador char(30),horario time,Origem INT NOT NULL,Destino INT NOT NULL,produtos INT NOT NULL,transportadora INT NOT NULL,MotivoViajem char(40) null,eixo char(32) null,frequenciaUtilizacao char(32) null,avaliacaoVianorte char(32) null,postoUtilizado INT NOT NULL,tempodeViajem char(32) null,primary key (idCadastro, Origem, Destino, produtos, transportadora, postoUtilizado),FOREIGN KEY (Origem) REFERENCES cidade (idcidades) ON DELETE NO ACTION ON UPDATE NO ACTION,FOREIGN KEY (Destino) REFERENCES cidade (idcidades) ON DELETE NO ACTION ON UPDATE NO ACTION,FOREIGN KEY (produtos) REFERENCES produtos (idProdutos) ON DELETE NO ACTION ON UPDATE NO ACTION,FOREIGN KEY (postoUtilizado) REFERENCES postoservico (idPosto) ON DELETE NO ACTION ON UPDATE NO ACTION ,FOREIGN KEY (transportadora) REFERENCES transportadora (idTransportadora) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE=InnoDB;

maneira que é feita o select:

 

$sql = "SELECT * FROM produtos order by nomeProduto";

São 5 combobox com select em tabelas . está muito lento a pagina não chega nem a abrir

 

a a necessidade de criar index ? se houver como sera feito ?

 

muito obrigado pela atenção:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá camarada,

 

Dê uma lida nisso quanto à necessidade de criação de índices: http://www.devmedia.com.br/articles/viewcomp.asp?comp=6567 .

Bom, normalmente, criamos índics em campos que são abordados nas clásula ORDER BY e WHERE. Bom que esteja usando InnoDB.

Certa vez, por causa da lentidão, nos levamos algumas tabelas InnoDB para MyISAM, e tivemos ganho de performance...não faça isso sem ter ciência do que poderá acontecer e faça backup antes da mudança.

 

Qualquer dúvida, continue postando!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Procurei saber um pouco sobre indices, e achei que os indices deve ser criado na tabela cadastro apontando para sua chave estrangeiras e tbm criado indices nas tabelas referencias apontando para suas devidas chaves primaria, correto ?alguem me ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os índices devem ser criados nos campos que queremos exibir na tela para o usuário.

Na sua tabela que tem mais FK's só tem identificadores de linhas de tabelas externas ok? Sendo assim, os índices devem ser criados nos campos das tabelas relacionadas na sua junção, ok?

 

Abração!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.