三个问题: 创建模型时,是否也会自动创建foreign_key?
我认为当列对于表是唯一的或者通常是唯一的时,或者当列与其他数据库相关时,我应该add_index吗?Amirite?
索引会是什么样子?它只是使用单元格的内容吗?
答案 0 :(得分:3)
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