В базе данных MySQL, где есть связи между таблицами и первичным ключом одной таблицы, хранится как внешний ключ во второй таблице, есть ли необходимость в выполнении соединения?Отношения и присоединения MySQL
Если есть, то в чем смысл объявления отношений? Я бы взял удар в темноте и сказал, что это как-то связано с индексированием или смежными таблицами, которые могут быстрее найти связанные записи? Я пробовал Google, но не могу найти много. Я уверен, что в этом есть масса, но я не знаю, какие ключевые слова нужно искать.
Ниже приведен пример таблицы 1 и таблицы 2:
------------------- Table 1 ----------------------
CREATE TABLE IF NOT EXISTS `db_hint`.`user` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`fb_id` INT NOT NULL,
`last_logged_in` DATETIME NULL,
`permissions` INT UNSIGNED NOT NULL,
PRIMARY KEY (`id`),
INDEX `permissions_id_idx` (`permissions` ASC),
CONSTRAINT `permissions_id`
FOREIGN KEY (`permissions`)
REFERENCES `db_hint`.`permissions` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
----------------- Table 2 ----------------------
CREATE TABLE IF NOT EXISTS `db_hint`.`user_stat` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`user_id` INT UNSIGNED NOT NULL,
PRIMARY KEY (`id`),
INDEX `user_id_idx3` (`user_id` ASC),
CONSTRAINT `user_id`
FOREIGN KEY (`user_id`)
REFERENCES `db_hint`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
При выполнении любой вид соединения, делает двигатель ЬшоВВ использовать отношения каким-либо образом? Благодарю.
Внешние ключи также могут замедлять производительность в зависимости от того, есть ли у вас много обновлений/удалений, привязанных к внешнему ключу. Если ваше совпадение хорошее, вы можете просто создать поле с одинаковым типом данных и поместить на него регулярный индекс. –