Thanks for the replies. Another thing I see are some search plugins that use LIKE in them predominantly and that's also why I was wondering if it was ok. searchlogic was one I was looking at and so was search_do.
On Mar 13, 11:59 am, Philip Hallstrom <[email protected]> wrote: > > Thanks, that makes things clearer. But how big is big? I don't plan on > > my app being hugely popular, but would thousands of entries be ok? Is > > there an area where LIKE starts to be really slow? > > If it's a blog, I wouldn't think twice about using LIKE. That is, I > can't see a blog being big enough for it to become a problem. > However, as other folks have said it definitely can be the source of > problems down the road. > > At that point you should look at one of the full text search engines > like ferret, sphinx, solr, etc. > > Also, just so you're aware LIKE in mysql is case-INSENSITIVE. LIKE in > PostgreSQL is case-SENSITIVE. > > So when you're searching for names and are happy doing a LIKE '%ill%' > to find those names below, keep in mind that won't work in > PostgreSQL. PostgreSQL has an ILIKE for that, but then that's not > supported by MySQL. PostgreSQL also has some regex pattern matching > functions that are faster, but again I believe are postgres only. > > Anyway, just something to keep in mind if you think your app might be > run with different backends. > > -philip > > > On Mar 13, 11:06 am, Charles Johnson <[email protected]> wrote: > >> On Fri, Mar 13, 2009 at 12:42 PM, Mike C <[email protected]> wrote: > > >>> I've heard that using LIKE is very slow, but I see it being used a > >>> lot > >>> in examples, blogs etc. Is it really that bad? Since Rails doesn't > >>> directly support Fulltext search, this is the easiest way to get > >>> searching done, right? Or are there any other easier ways? I'm using > >>> acts_as_indexed right now, but it still doesn't do what LIKE does. > > >> The problem with the sql "LIKE" is that it can render the use of an > >> index impossible. Imagine a search like: > > >> @users = User.find(:all, :conditions => "first_name like '%ILL%'") > > >> The database will have to find BILL, GILL, JILL, JILLIAN, etc. If > >> you have a > >> few hundred or a few thousand users that may not be such an issue. > >> Millions > >> of users makes this a different issue altogether. A full table scan > >> is > >> needed, and what will you do with all those rows? > > >> The point is this, when you are tempted to use LIKE be sure the > >> data set > >> searched and returned are small and that you try to other ways to > >> constrain > >> the search. > > >> Cheers-- > > >> Charles --~--~---------~--~----~------------~-------~--~----~ 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 [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---

