如何解决为什么Laravel自动为约束列添加索引
为什么Laravel为这种情况自动添加“ 索引”?
$table->foreignId('user_id')->nullable()
->constrained('users','id')
->onDelete('no action')
->onUpdate('no action');
解决方法
来自https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html
,MySQL要求在外键和引用键上建立索引,以便外键检查可以快速进行,而无需进行表扫描。在引用表中,必须有一个索引,其中外键列以相同的顺序列为第一列。 如果索引不存在,则会在引用表上自动创建该索引。如果您创建另一个可用于执行外键约束的索引,则以后可能会静默删除此索引。如果已指定,则使用index_name,如前所述。
Laravel 仅添加外键约束,而不隐式添加 index 。但是某些数据库(例如MySQL)会自动索引外键列。
在数据库表中定义外键约束时,将不会自动创建索引 >“外键” 列,如 PRIMARY KEY 约束情况,在该情况下将自动创建集群索引 在定义它时。 强烈建议在外键列上创建索引,以增强主键和外键之间的联接性能,并降低维护关系的成本 >在子表和父表之间。在添加任何新索引之前,最好在开发环境上进行测试并监视实施后的总体性能,以确保所添加的索引可以提高性能并且不会对系统性能产生负面影响。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。