Dos series de cuadros idénticos con uniones mediante índices de MySQL; uno requiere escaneo completo de tabla
-
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
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:)