Индекс SQL для внешнего ключа

John Olow спросил: 28 апреля 2018 в 08:24 в: mysql

Когда я присоединяюсь к двум таблицам tbl1, tbl2 в column1, где column1 - первичный ключ на tbl1. Предполагая, что column1 не индексируется автоматически, я должен создать индекс как для tbl1.column1, так и для tbl2.column1 или просто для tbl2.column1. Является ли количество строк каждой таблицы влиять на этот выбор?


2 ответа

Есть решение
Gordon Linoff ответил: 28 апреля 2018 в 08:46

Первичный ключ автоматически индексируется. Нет никакого способа обойти это (именно так реализуется "уникальная" часть уникального ограничения). Итак, tbl1.column1 имеет индекс. Никакой другой индекс не нужен.

Что касается tbl2.column2, у вас должен быть индекс. MySQL создает индекс, если вы явно объявляете отношение внешнего ключа. Таким образом, с явным объявлением никакой другой индекс не требуется. Примечание: это не относится ко всем базам данных.

Наличие индексов не изменяет результаты запросов и количество строк в таблице, поэтому я не понимаю ваш последний вопрос. Индексы реализуют реляционную целостность и улучшают (надеюсь,!) Производительность по определенным типам запросов

John Olow ответил: 28 апреля 2018 в 08:50
В моем последнем вопросе я имею в виду, что количество строк влияет на мой выбор, по какому индексу shooulld я создаю.
Gordon Linoff ответил: 28 апреля 2018 в 10:41
@JohnOlow. , , Если одна из таблиц действительно небольшая (данные соответствуют одной странице данных), то индекс может не дать большой производительности.
RichardAtHome ответил: 28 апреля 2018 в 08:27

Вообще-то да, потому что часто вам нужно сделать обратную ссылку в какой-то момент.