现有表的架构中的add_index

时间:2013-04-30 13:03:17

标签: ruby-on-rails ruby-on-rails-3 activeadmin

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

OpenSource Schema

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之外,我的架构完全相同。他们是如何得到的,也许如果你有时间,为什么?提前谢谢。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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