Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:外键和索引时间_Ruby On Rails_Ruby_Foreign Keys_Migration_Relational Database - Fatal编程技术网

Ruby on rails Rails:外键和索引时间

Ruby on rails Rails:外键和索引时间,ruby-on-rails,ruby,foreign-keys,migration,relational-database,Ruby On Rails,Ruby,Foreign Keys,Migration,Relational Database,三个问题: 创建模型时,是否也会自动创建外键 我在想,当一列对表是唯一的或通常是唯一的,或者当该列与其他数据库相关时,我应该添加_索引,Amirite 索引是什么样子的?它会仅仅使用单元格的内容吗 1)你是说使用发电机时?一般来说,您应该生成迁移,而不是对整个模型/脚手架使用生成器。然后,不,只有在您指定外键的情况下,才会自动创建外键 2) 对于需要数据库快速访问的大型表上的列,add_索引将派上用场。假设您有一个users表,其中包含一个email列,该列必须是唯一的,但没有索引。而且您的服务

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

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

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

1)你是说使用发电机时?一般来说,您应该生成迁移,而不是对整个模型/脚手架使用生成器。然后,不,只有在您指定外键的情况下,才会自动创建外键

2) 对于需要数据库快速访问的大型表上的列,add_索引将派上用场。假设您有一个
users
表,其中包含一个
email
列,该列必须是唯一的,但没有索引。而且您的服务也在增长,现在您拥有数百万用户,您需要通过电子邮件找到用户someone@example.com“。如果没有索引,这将需要一段时间。有了索引,它会变得很快。这时索引就派上了用场

3) 这完全取决于你的数据库引擎。这不会影响您的日常imho(不过,如果您心中有一个特定的数据库引擎,您肯定会发现)。以下是MySQL的信息,直接来源于源代码:

1)你是说在使用生成器时?一般来说,您应该生成迁移,而不是对整个模型/脚手架使用生成器。然后,不,只有在您指定外键的情况下,才会自动创建外键

2) 对于需要数据库快速访问的大型表上的列,add_索引将派上用场。假设您有一个
users
表,其中包含一个
email
列,该列必须是唯一的,但没有索引。而且您的服务也在增长,现在您拥有数百万用户,您需要通过电子邮件找到用户someone@example.com“。如果没有索引,这将需要一段时间。有了索引,它会变得很快。这时索引就派上了用场


3) 这完全取决于你的数据库引擎。这不会影响您的日常imho(不过,如果您心中有一个特定的数据库引擎,您肯定会发现)。以下是MySQL的信息,直接来源于源代码:

rails生成模型,然后编写迁移,是更好的做法吗?我想我也明白了。所以当我使用t.references方法时,我正在创建外键?不,你不需要生成模型。生成迁移,编写模型。而且
index:true
在迁移中会将一个列标记为索引,尽管您也有方法在事实之后添加索引。当然,很乐意提供帮助:)所以rails生成模型,然后编写迁移,是更好的做法吗?我想我也明白了。所以当我使用t.references方法时,我正在创建外键?不,你不需要生成模型。生成迁移,编写模型。迁移中的
index:true
会将一个列标记为索引,尽管你也有办法在事实之后添加索引。当然,很乐意帮忙:)