Я работаю над парой таблиц ссылок, и я подумал (Danger Will Robinson, Danger), каковы возможные структуры таблицы ссылок и каковы их плюсы и минусы.
Я придумал несколько возможных ограничений для таблицы ссылок:
Традиционная модель с тремя колоннами
- id - ПЕРВИЧНЫЙ ПЕРВИЧНЫЙ НОМЕР
- table1fk - внешний ключ
- table2fk - внешний ключ
Это классика, в большинстве книг, - сказал Нуфф.
Индексированная модель с 3 столбцами
- id - ПЕРВИЧНЫЙ ПЕРВИЧНЫЙ НОМЕР
- table1fk - внешний ключ
INDEX ('table1fk')
- table2fk - внешний ключ
INDEX ('table2fk')
По моему опыту, поля, к которым вы обращаетесь, не индексируются в традиционной модели. Я обнаружил, что индексирование полей внешнего ключа повышает производительность, как и следовало ожидать. Не главное изменение, но приятная оптимизация.
Композитный ключ 2 столбца ADD PRIMARY KEY ('table1fk' , 'table2fk')
- table1fk - внешний ключ
- table2fk - внешний ключ
При этом я использую составной ключ, чтобы запись из таблицы1 могла быть связана только с записью в таблице2 один раз. Поскольку ключ является составным, я могу добавлять записи (1,1), (1,2), (2,2) без ошибок дублирования.
Есть ли потенциальные проблемы с опцией составного ключа 2 столбца? Есть ли проблема с индексированием, которая может вызвать это? Хит производительности? Что-нибудь, что могло бы исключить это как возможный вариант?