Невозможно объединить две таблицы, используя индексы - PullRequest
0 голосов
/ 10 марта 2011

Я просто не могу заставить индексы таблиц использовать себя в этом объединении таблиц:

explain select n.* from npi n,npi_taxonomy nt where n.NPI=nt.NPI_CODE;

Вот вывод команды объяснения, которую я получаю: enter image description here

Как вы можете видеть, он находит ключ в столбце возможных_ключей, но ключевой столбец пуст.Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 11 марта 2011

Ваш запрос касается всех строк в таблице NPI, и вы выбираете из нее все столбцы.
Почему вы хотите, чтобы MySQL использовал индекс для этой таблицы?

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

0 голосов
/ 11 марта 2011

почему бы не использовать явные объединения

SELECT n.* FROM npi n  
INNER JOIN npi_taxomoty nt ON (n.NPI = nt.NPI_CODE)

или использовать левое соединение:

SELECT n.* FROM npi n
LEFT JOIN npi_taxomoty nt ON (n.NPI = nt.NPI_CODE)

Если первый запрос возвращает нет результата, а второй делает , у вас нет совпадений между n.NPI и nt.NPI_CODE.

В качестве дополнительного замечания я считаю странным, что вы дали бы полю (NPI) то же имя, что итаблица (нпи).Это сбивает с толку.

...