Два набора одинаковых таблиц с объединениями, использующими индексы в MySQL; требуется полное сканирование таблицы - PullRequest
2 голосов
/ 14 февраля 2010

Я очень запутался с индексами в MySQL.

У меня есть две таблицы: TableA1 и TableA2.

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

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

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

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

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

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

Вот таблица №:

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

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

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

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

Приветствия
Ке

1 Ответ

0 голосов
/ 15 февраля 2010

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

...