【发布时间】:2016-04-17 16:58:15
【问题描述】:
三个问题: 创建模型时,是否也会自动创建foreign_key?
我在想,当一列对表是唯一的或通常是唯一的,或者当该列与其他数据库相关时,我应该 add_index,Amirite?
索引会是什么样子?它会只使用单元格的内容吗?
【问题讨论】:
标签: ruby-on-rails ruby foreign-keys migration relational-database
三个问题: 创建模型时,是否也会自动创建foreign_key?
我在想,当一列对表是唯一的或通常是唯一的,或者当该列与其他数据库相关时,我应该 add_index,Amirite?
索引会是什么样子?它会只使用单元格的内容吗?
【问题讨论】:
标签: ruby-on-rails ruby foreign-keys migration relational-database
1) 你的意思是在使用发电机时?一般来说,您应该生成迁移,而不是为整个模型/脚手架使用生成器。然后,不,不会自动创建外键,除非您指定它。
2) 对于需要由数据库快速访问的大表上的列,add_index 将派上用场。假设您有一个 users 表,其中的 email 列必须是唯一的,但没有索引。而且您的服务不断增长,现在您拥有数百万用户,您需要转至User.find_by_email "someone@example.com"。如果没有索引,那将需要您一段时间。有了索引,它会很快。这时候索引就派上用场了。
3) 真的取决于你的数据库引擎 afaik。不会影响您的日常恕我直言(尽管如果您考虑到特定的数据库引擎,您当然可以找到)。以下是有关 MySQL 的信息,直接来自源:https://dev.mysql.com/doc/refman/5.5/en/column-indexes.html
【讨论】:
index: true 会将 col 标记为索引,尽管您也可以在事后添加索引。