Может ли MySQL использовать индексы для двух разных механизмов хранения? - PullRequest
2 голосов
/ 11 октября 2009

У меня есть таблица myisam и таблица innodb. У innodb есть индекс по внешнему ключу от myisam. Может ли MySQL использовать этот индекс при выполнении объединений?

Ответы [ 2 ]

3 голосов
/ 11 октября 2009

Запросы, объединяющие таблицы из нескольких механизмов хранения, могут использовать индексы из любой из таблиц.

Обратите внимание, однако, что MyISAM не поддерживает внешние ключи, и вы не можете создать внешний ключ для таблицы MyISAM. Подробнее о внешних ключах см. в руководстве по MySQL .

0 голосов
/ 11 октября 2009

Да, это возможно. В основном объединения будут реализованы путем обычного выбора из одной таблицы (возможно, поиска ключа или сканирования диапазона), а затем поиска ключа соединения в другой таблице. Во втором поиске будет использоваться соответствующий индекс для другой таблицы (при условии, что такой индекс существует, и оптимизатор решит, что его целесообразно использовать).

Интерфейс механизма хранения MySQL позволяет серверу использовать индексы из разных механизмов в одном запросе.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...