gpt4 book ai didi

MySQL - 索引 innodb 外键

转载 作者:行者123 更新时间:2023-11-29 12:21:11 27 4
gpt4 key购买 nike

InnoDB 中索引外键的性能是否有所提高?据我所知read ,InnoDB自动为外键创建索引。

这是为我提供的用于创建表的查询。

DROP TABLE IF EXISTS `assignments`;

CREATE TABLE `assignments`
(
`id` INTEGER NOT NULL AUTO_INCREMENT,
`user` INTEGER NOT NULL,
`job` INTEGER NOT NULL,
`created_at` DATETIME,
`updated_at` DATETIME,
PRIMARY KEY (`id`),
INDEX `job_fk1` (`user`),
INDEX `job_fk2` (`job`),
CONSTRAINT `job_fk1`
FOREIGN KEY (`user`)
REFERENCES `users` (`id`),
CONSTRAINT `job_fk2`
FOREIGN KEY (`job`)
REFERENCES `jobs` (`id`)
) ENGINE=InnoDB;

在那里,他创建了名为 job_fk1 和 job_fk2 的外键。他使用这些外键的名称作为索引的名称。

最佳答案

InnoDB 中索引外键的性能是否有所提高?

答案:不会。由于重复的 key ,性能会下降。

你不需要

INDEX `job_fk1` (`user`),
INDEX `job_fk2` (`job`),

这些将由 InnoDB 内部自动创建。但是您需要在 users (id) 和 jobs (id) 上建立索引,以便更快地操作 作业

http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html

“InnoDB需要外键和引用键上的索引,以便外键检查可以很快并且不需要表扫描。在引用表中,必须有一个索引,其中外键列被列为第一列同样的顺序。如果引用表不存在,则会自动在引用表上创建索引。(这与某些旧版本相反,在旧版本中必须显式创建索引,否则创建外键约束将失败。) ,如果给出,则按照前面的描述使用。”

关于MySQL - 索引 innodb 外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28977982/

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