如果我想在数据库级别创建一个唯一的表列,这是否需要此列也成为索引?
我有一个名为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方法。
答案 0 :(得分:0)
这是您在数据库中创建唯一列的方法,您可以将其作为唯一索引。这就是在dbs中实现唯一性的方式。它被放入索引中,以便快速验证其唯一性。你做对了。