Dois conjuntos de tabelas indenticais com junções usando índices no MySQL; um requer varredura de tabela completa

StackOverflow https://stackoverflow.com/questions/2262458

  •  20-09-2019
  •  | 
  •  

Pergunta

Estou ficando muito confuso com os índices no MySQL.

Eu tenho duas tabelas: tablea1 e tablea2.

Criei índices sobre isso para as junções entre eles e as consultas correm muito rápido.

Eu tenho outras 2 tabelas com uma configuração idêntica EG TABLEB1 e TABLEB2. A única diferença é que essas tabelas têm alguns valores nulos.

Por alguma razão, a mesma consulta no Tablea é cerca de 5 vezes mais rápida e não requer uma varredura de mesa completa. A Tabelab, no entanto, parece usar uma varredura completa da tabela e não consigo descobrir o porquê. Poderia ser os valores nulos que estão causando isso?

Percebo usando explicar que, na configuração de tablea, eu entendo possible keys: myindex e também ref: func; No entanto, na configuração da tabela, eu recebo apenas possible keys: NULL e ref: NULL.

Eu procurei por um bom tempo nisso e não consigo encontrar uma resposta relevante. Agradeceria se alguém pudesse me apontar na direção certa.

(Desculpe, agora adicionado à pergunta original.)

Aqui está TableaOne:

CREATE TABLE `TableAOne` (
  `field1` varchar(255) DEFAULT NULL,
  `field2` varchar(255) DEFAULT NULL,
  KEY `myindex` (`field1`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

E tabelwo:

CREATE TABLE `TableATwo` (
  `Field3` varchar(255) ,
  `Field4` varchar(255) ,
  `Field5` varchar(255) ,
  `id` int(20) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=15522 DEFAULT CHARSET=utf8;

Estou ingressando no Field3 com o campo1.

As tabelas que obtêm a varredura de mesa completa são idênticas às tabelas acima. A única diferença é que eles são chamados de tabela em vez de tablea.

Saúde,
Ke

Foi útil?

Solução

Acabei de excluir a mesa e reinstalei-a para o banco de dados (eu mudei o UTF8 para Latin1 não tenho certeza se isso fez a diferença), no entanto, agora funciona, muito estranho! Muito obrigado por todas as respostas que eles certamente me empurraram em direção à resposta, aplausos :)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top