Jeffrey L. Taylor wrote in post #958953:
> How should I index the terms table for maximum speed?

How can we tell you?  You neglected to say how you're using that 
table...or is the query below the only one you're interested in?

>  It doesn't have
> to be
> Rails migration doable.

But it will be, since adding indices generally is.

>  E.g. a primary key of (user_id, article_id,
> fnv) is
> okay.  fnv is a 63 bit Fowler-Noll-Vo hash.
>
>
>   def self.neighbors(user_id, article_id)
>     sql = "SELECT t1.article_id, SUM(t1.freq * t2.freq) AS cosim FROM "
> \
>     "tokens AS t1 JOIN tokens AS t2 " \
>     "ON t1.fnv = t2.fnv WHERE t1.user_id = #{user_id} AND t2.user_id =
> #{user_id} AND " \
>     "t1.scoring = 1 AND t2.scoring = 0 AND t2.article_id = #{article_id}
> GROUP BY t1.article_id " \
>     "ORDER BY cosim DESC LIMIT 3"
>     connection.select_rows(sql)
>   end

Run EXPLAIN SELECT on this query (or whatever your DB's equivalent is). 
See where it's doing full table scans and add indices as appropriate.

>
>
> TIA,
>   Jeffrey

Best,
--
Marnen Laibow-Koser
http://www.marnen.org
mar...@marnen.org

-- 
Posted via http://www.ruby-forum.com/.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-t...@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to