0

我正在关注一个开源应用程序作为我的应用程序的指南。一点背景,我正在尝试在活动管理员中嵌套一个表单。我假设这是它们嵌套形式的一部分。

开源模式

create_table "addresses", :force => true do |t|
 t.integer  "addressable_id"
 t.string   "addressable_type"
 t.string   "street"
 t.string   "city"
 t.string   "state",            :limit => 2
 t.integer  "zip"
 t.datetime "created_at"
 t.datetime "updated_at"
end

add_index "addresses", ["addressable_type", "addressable_id"], :name =>  "index_addresses_on_addressable_type_and_addressable_id"

除了底部的 add_index 之外,我的架构完全相同。他们是如何得到的,也许如果你有时间,为什么?先感谢您。

4

2 回答 2

1

ActiveAdmin 正在向数据库表添加索引以提高数据库的性能。索引不是表中的附加行,而是允许数据库引擎更快地查找内容的单独结构。可以在这里找到一篇很棒的介绍性文章:

http://www.mysqlperformanceblog.com/2011/08/30/explaining-indexes-with-a-library-metaphor/

Rails 迁移使用 add_index 语法为这个数据库表创建索引。

于 2013-04-30T14:10:32.670 回答
1

我假设 Addresses 是多态表,这就是为什么你有 addressable_id 和 addressable_type 列。因此,每次查找对象地址时,都必须在两列中进行搜索。为了优化数据库中的查找时间,您创建一个包含这些列的索引。

于 2013-04-30T14:15:23.093 回答