Ir para conteúdo

POWERED BY:

Arquivado

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

KUROL3

indices

Recommended Posts

Olá tenho o seguinte comando..

como eu sei que ele esta usando o index id_igreja sendo que no phpmysadmin aparece 2061 registro

 

e o explain

id select_type table type possible_keys key key_len ref rows Extra

1 SIMPLE r_galeria ALL id_igreja NULL NULL NULL 4123 Using temporary; Using filesort

1 SIMPLE relatorio eq_ref PRIMARY PRIMARY 4 banco.r_galeria.id_igreja 1

 

comando

SELECT pais, cidade, estado, bairro, id_igreja, foto FROM r_galeria INNER JOIN relatorio ON (r_galeria.id_igreja = relatorio.id) ORDER by RAND() LIMIT 1

estrutura tabela r_galeria

CREATE TABLE `r_galeria` (
 `id` int(250) NOT NULL auto_increment,
 `id_igreja` int(11) NOT NULL,
 `r_cidade` varchar(250) NOT NULL default '',
 `r_estado` varchar(250) NOT NULL default '',
 `r_pais` varchar(250) NOT NULL default '',
 `foto` varchar(250) NOT NULL default '',
 `titulo` varchar(250) NOT NULL default '',
 `descricao` varchar(250) NOT NULL default '',
 `usuario` int(11) NOT NULL,
 `data` varchar(250) NOT NULL default '',
 `ip` varchar(250) NOT NULL default '',
[color="#FF8C00"]  PRIMARY KEY  (`id`),
 KEY `usuario` (`usuario`),
 KEY `id_igreja` (`id_igreja`)[/color]
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4208 ;

 

Marco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao consegui entender o que você quer.

Li várias vezes, mas ficou vago.

 

Explique nos mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que se saber o plano de execução da query.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou tentar explicar a mesma coisa diferente...

 

como eu vou saber se o campo id_igreja no select com innjer, está usando indece ou não, sendo que quê a tebela tem pouco mais de 4000 registros e o indice da id_igreja tem pouco mais de 2000

 

Marco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na tabela r_galeria sua consulta está lendo todas as linhas (4123) pois ela retorna ALL na coluna type. ALL é o pior tipo que possa retornar em relação ao plano de execução para uma consulta. Perceba também que na coluna possible_keys temos o valor NULL e também na coluna key, essa que indica qual índice fora utilizado para buscar os dados, está também com o valor NULL. Essa consulta precisa ser otimizada, pois estrá rodando no "seco".

 

A segunda consulta está utilizando a chave primária, lendo somente 4 linhas. O tipo retornado é eq_ref que diz que apenas uma linha foi lida para um conjunto de linhas de outra tabela, ou seja, para cada 1 linha de relatório, 1031 (mais ou menos) eram lidas. eq_ref é um dos types mais otimizados relacionados com planos de consultas.

 

No final, você tem uma leitura simples, para esta consulta, você manipulou 4123 * 4 = 16.492 linhas! Melhore sua consulta à tabela r_galeria.

 

Happy MySQL'ing!! http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

opssssssssssssssssssssssssssssssssss

 

mancada feia q eu dei na minha leitura dinamica

 

pra query ficar 100% falta um index/chave em relatorio.id

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pelas respostas porém não funcinow ainda. vou colar as imagens aqui.

 

explain

Imagem Postada

 

tabela R galeria

Imagem Postada

 

tabela relatorio

Imagem Postada

 

Duvida

Conforme o Wagner Bianchi disse a possible_keys não esta null???

E o giesta pra query ficar 100% falta um index/chave em relatorio.id - nesta tabela relatório este id é a primary key e não repete nenhum registro.

Aguardo

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.