Problem indexing add Simple Table Inherance

0 views
Skip to first unread message

John Smith

unread,
Mar 11, 2010, 4:50:11 AM3/11/10
to rubyonra...@googlegroups.com
I have a simple table inherance, with an upper class GeneralElement. A
class that inherits is Activity:
class Activity < GeneralElement
...
end


The GeneralElement table is very big (about 2.000.000 rows!). Other
classes that inherit from GeneralElement return queries very fast, but
Activity.last is very slow. I have added indexes to id and type, but it
has no effect. What can I do?

I'll appreciate any help
--
Posted via http://www.ruby-forum.com/.

Matt Jones

unread,
Mar 12, 2010, 1:33:35 PM3/12/10
to Ruby on Rails: Talk

On Mar 11, 4:50 am, John Smith <li...@ruby-forum.com> wrote:
> I have a simple table inherance, with an upper class GeneralElement. A
> class that inherits is Activity:
> class Activity < GeneralElement
> ...
> end
>
> The GeneralElement table is very big (about 2.000.000 rows!). Other
> classes that inherit from GeneralElement return queries very fast, but
> Activity.last is very slow. I have added indexes to id and type, but it
> has no effect. What can I do?

You may want to grab the query that Activity.last is using, and try
running it through 'EXPLAIN' to see what it's looking for. Have you
defined an order (via default_scope, for instance) on Activity? You
might need to have an index on that field together with 'type' to get
right behavior.

--Matt Jones

John Smith

unread,
Mar 14, 2010, 6:39:29 PM3/14/10
to rubyonra...@googlegroups.com

I have added an index to the type column; but maybe it's possible to add
a special index to both the id and type column at the same time. How
could I do this?

Matt Jones

unread,
Mar 15, 2010, 9:17:10 PM3/15/10
to Ruby on Rails: Talk

add_index will accept an array of columns:

add_index :general_elements, [:type, :id]

--Matt Jones

Reply all
Reply to author
Forward
0 new messages