Deux ensembles de tables identiques avec les jointures avec des index dans MySQL; on a besoin d'analyse table complète

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

  •  20-09-2019
  •  | 
  •  

Question

Im obtenir très confus avec des index dans MySQL.

J'ai deux tables:. TableA1 et tableau A2

J'ai créé des index sur ces derniers pour les jointures entre eux et exécuter des requêtes très vite.

J'ai encore 2 tables avec une configuration identique par exemple TableB1 et TableB2. La seule différence est que ces tables ont quelques valeurs nulles.

Pour une raison quelconque la même requête sur TableA est environ 5 fois plus rapide et ne nécessite pas une analyse table complète. TableB semble toutefois utiliser un scan de table et je ne peux pas comprendre pourquoi. Se pourrait-il les valeurs nulles qui sont la cause?

Je remarque avec EXPLAIN que sur la configuration du TableA, je reçois possible keys: myindex et aussi ref: func; mais sur la configuration de TableB Je viens d'obtenir possible keys: NULL et ref: NULL.

Je l'ai cherché autour depuis un certain temps à ce sujet, et ne peut pas sembler trouver une réponse pertinente. Apprécierait si quelqu'un peut me diriger dans la bonne direction.

(Désolé, maintenant ajouté à la question initiale.)

Voici TableAOne:

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

Et 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;

Je rejoins Field3 avec Champ1.

Les tableaux qui obtiennent l'analyse table complète sont identiques aux tableaux ci-dessus. La seule différence est qu'ils sont appelés TableB au lieu de TableA.

Cheers,
Ke

Était-ce utile?

La solution

Je viens de supprimer la table et re-installé à la db (je l'ai fait le changement UTF8 latin1 ne sais pas si cela fait une différence), mais il fonctionne maintenant, vraiment étrange! merci beaucoup pour v toutes les réponses, ils me certainement poussé vers les acclamations de la réponse:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top