【问题标题】:Rails: Foreign Keys and when to indexRails:外键和何时索引
【发布时间】:2016-04-17 16:58:15
【问题描述】:

三个问题: 创建模型时,是否也会自动创建foreign_key?

我在想,当一列对表是唯一的或通常是唯一的,或者当该列与其他数据库相关时,我应该 add_index,Amirite?

索引会是什么样子?它会只使用单元格的内容吗?

【问题讨论】:

    标签: ruby-on-rails ruby foreign-keys migration relational-database


    【解决方案1】:

    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

    【讨论】:

    • 那么rails生成模型,然后写迁移,是不是更好的做法?我也想我明白了。所以当我使用 t.references 方法时,我正在创建外键?
    • 否 - 您不需要生成模型。生成迁移,编写模型。迁移中的 index: true 会将 col 标记为索引,尽管您也可以在事后添加索引。
    • 确定,乐于助人:)
    猜你喜欢
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 2014-06-20
    • 2010-11-01
    • 1970-01-01
    • 2020-01-29
    • 2011-05-25
    相关资源
    最近更新 更多