【问题标题】:Does in Rails making a column unique at a db level require it to become an index在 Rails 中使列在数据库级别唯一需要它成为索引吗
【发布时间】:2015-04-10 18:55:04
【问题描述】:

如果我想在数据库级别使表列唯一,这是否需要该列也成为索引?

我有一个名为 username 的列,我希望它是唯一的,但它不需要是索引(登录是基于电子邮件地址完成的,这已经是一个索引)。

所以在模型级别我添加了:

validates :username, presence: true,
                     length: { maximum: 15 },
                     uniqueness: { case_sensitive: false }

但是我应该在迁移文件中做什么? 我知道我可以添加到迁移文件中:

add_index :users, :username, unique: true

但这会使用户名也成为一个索引,我并不真正需要它(我认为只会让应用程序变慢)。

我正在使用 SQLite 进行开发(遵循 Hartl 的教程,但针对我自己的应用程序调整了说明)。 可能要使其唯一需要它成为索引,但我想确定一下。我希望这是因为在 http://api.rubyonrails.org/classes/ActiveRecord/Migration.html 'unique' 上只有 add_index 方法存在。

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    这就是您使列在数据库中唯一的方式,您使其成为唯一索引。这就是在 dbs 中实现唯一性的方式。它被放入索引中,以便可以快速验证其唯一性。你做得对。

    【讨论】:

    • 唯一索引不是普遍要求——一些数据库可以实现非唯一索引支持的唯一约束。通常,唯一约束与唯一索引是不同的实体,即使它们具有相同的影响。
    猜你喜欢
    • 2011-02-05
    • 2015-02-03
    • 2021-02-06
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    • 2012-03-12
    • 2011-02-24
    • 2017-07-04
    相关资源
    最近更新 更多