Dos series de cuadros idénticos con uniones mediante índices de MySQL; uno requiere escaneo completo de tabla

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

  •  20-09-2019
  •  | 
  •  

Pregunta

Im que consigue muy confundido con índices de MySQL.

Tengo dos tablas:. TableA1 y TableA2

He creado índices en estos para las uniones entre ellos y consultas correr muy rápido.

Tengo otras 2 mesas con una configuración idéntica, por ejemplo, TableB1 y TableB2. La única diferencia es que estas tablas tienen unos valores nulos.

Por alguna razón la misma consulta en la Tabla A es aproximadamente 5 veces más rápido y no requiere un análisis completo de mesa. TableB sin embargo parece utilizar un escaneo completo de tabla y no puedo entender por qué. Podría ser los valores nulos que están causando esto?

Me he dado cuenta usando explicar que en la configuración de la Tabla A, consigo possible keys: myindex y también ref: func; sin embargo, en la configuración TableB consigo simplemente possible keys: NULL y ref: NULL.

He buscado alrededor durante bastante tiempo en esto, y parece que no puede encontrar una respuesta pertinente. Agradecería si alguien me puede apuntar en la dirección correcta.

(Lo siento, ahora añadido a la pregunta original.)

Aquí es TableAOne:

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

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

Me uno a Campo3 con Campo1.

Las tablas que tienen el escaneo completo de mesa son idénticas a las tablas anteriores. La única diferencia es que se llaman TableB en lugar de TableA.

Saludos, España Ke

¿Fue útil?

Solución

Me acaba de eliminar la tabla y volver a instalar para el PP (que hice el cambio a UTF-8 latin1 no está seguro de si esto hace una diferencia), sin embargo funciona ahora, realmente extraño! v gracias mucho por todas las respuestas que sin duda me empujó hacia los aplausos de respuesta:)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top