Об индексах при объединении 2 столбцов с типом int и типом varchar - PullRequest
1 голос
/ 06 июля 2011
User.id type INT
Avatar.foreign_key type VARCHAR

Когда я использую этот запрос:

SELECT *
FROM `user`
LEFT JOIN `avatar` ON (`avatar`.`foreign_key` = `user`.`id` )

Индексы не используют в этом запросе.Если я не изменю User.id , Avatar.foreign_key на тот же тип.

Как сделать вышеупомянутый запрос, использующий индекс, который мне не нужно изменять 2 столбцатип?Я хочу держать VARCHAR и INT на 2 столбцах.

1 Ответ

4 голосов
/ 06 июля 2011

Они должны быть одного типа - и они должны быть в любом случае. Если вам нужно, чтобы один из них был VARCHAR, а другой - INT, это признак того, что вы злоупотребляете столбцом VARCHAR. Вам следует добавить новый столбец INT в таблицу аватаров, который может иметь правильное отношение FK к другому.

Зачем вам нужен один из них, чтобы быть VARCHAR?

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