Due insiemi di tabelle identiche con join utilizzando gli indici in MySQL; uno richiede scansione full-table

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

  •  20-09-2019
  •  | 
  •  

Domanda

Im ottenendo molto confuso con gli indici in MySQL.

Ho due tabelle:. TableA1 e TableA2

ho creato gli indici su queste per le giunzioni tra di loro e le query correre veramente veloce.

ho altri 2 tavoli con una configurazione identica esempio TableB1 e TableB2. L'unica differenza è che queste tabelle hanno un paio di valori nulli.

Per qualche ragione la stessa query su TableA è di circa 5 volte più veloce e non richiede una scansione completa-tavolo. TableB tuttavia sembra utilizzare una scansione completa della tabella e non riesco a capire perché. Potrebbe essere i valori Null che stanno causando questo?

Ho notato utilizzando spiegare che sulla messa a punto TableA, ottengo possible keys: myindex e anche ref: func; tuttavia sulla messa a punto TableB ottengo solo possible keys: NULL e ref: NULL.

Ho cercato in giro per un bel po 'su questo, e non riesco a trovare una risposta rilevante. Gradirei se qualcuno mi può puntare nella giusta direzione.

(Sorry, ora aggiunto alla domanda iniziale.)

Ecco TableAOne:

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

E TableATwo:

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;

Mi iscrivo Campo3 con Field1.

Le tabelle che ottengono la scansione completa-tavolo sono identici alle tabelle di cui sopra. L'unica differenza è che sono chiamati TableB invece di TableA.

Saluti,
Ke

È stato utile?

Soluzione

Ho appena cancellato la tavola e ri-installato al db (ho cambiato utf8 a latin1 non so se questo ha fatto la differenza), ma funziona ora, davvero strano! grazie v mille per tutte le risposte che certamente mi ha spinto verso gli applausi di risposta:)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top