gpt4 book ai didi

MySQL 关系和连接

转载 作者:搜寻专家 更新时间:2023-10-30 23:02:31 25 4
gpt4 key购买 nike

在MySQL数据库中,表与表之间存在关系,一个表的主键作为外键存储在第二个表中,是否还需要执行连接?

如果有,声明关系有什么意义?我会在黑暗中刺一下,说这与索引有关,或者相关表可以更快地找到相关记录?我试过用谷歌搜索这个,但似乎找不到太多。我敢肯定这方面有很多内容,但我不知道要搜索的关键字。

这是表 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;

当执行任何类型的连接时,InnoDB 引擎是否以任何方式使用关系?谢谢。

最佳答案

声明外键的目的是为了保证数据的一致性。您仍然需要 JOIN 才能获得所需的数据。在 MySQL 中,外键会提高性能,但不要期望与索引有太大可比性。

关于MySQL 关系和连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30256985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com