Два набора одинаковых таблиц с соединениями с использованием индексов в MySQL;требуется полное сканирование таблицы

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

  •  20-09-2019
  •  | 
  •  

Вопрос

Меня очень путает индексы в MySQL.

У меня есть две таблицы:ТаблицаА1 и ТаблицаА2.

Я создал для них индексы для соединений между ними, и запросы выполняются очень быстро.

У меня есть еще 2 таблицы с одинаковой настройкой, например.ТаблицаB1 и ТаблицаB2.Единственное отличие состоит в том, что эти таблицы содержат несколько нулевых значений.

По какой-то причине тот же запрос к TableA выполняется примерно в 5 раз быстрее и не требует полного сканирования таблицы.Однако TableB, похоже, использует полное сканирование таблицы, и я не могу понять, почему.Могут ли это быть вызваны значениями Null?

Я заметил, что с помощью EXPLAIN при настройке TableA я получаю possible keys: myindex а также ref: func;однако при настройке TableB я получаю только possible keys: NULL и ref: NULL.

Я довольно долго искал этот вопрос и не нашел подходящего ответа.Был бы признателен, если бы кто-нибудь указал мне правильное направление.

(Извините, теперь добавлено к исходному вопросу.)

Вот TableAOne:

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

И ТаблицаATwo:

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;

Я присоединяюсь к Field3 с Field1.

Таблицы, для которых выполняется полное сканирование, идентичны приведенным выше таблицам.Единственная разница в том, что они называются TableB вместо TableA.

Ваше здоровье,
Ке

Это было полезно?

Решение

Я просто удалил таблицу и переустановил ее в базу данных (я изменил utf8 на latin1, не уверен, что это имеет значение), однако сейчас это работает, очень странно!большое спасибо за все ответы, они определенно подтолкнули меня к ответу, ура :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top