I bet that it does not evaluate the right side if the left side is true. In most select statements OR means if x = 2 OR if x =3 return x. This will return all places where x = 2 or x = 3.
I haven't had any experience with these, but you can try control flow functions ( http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html) Extended answer: MySQL does everything with sets (groupings of values) and it is likely that all the returned values are put into the set. One characteristic of sets is that they can't contain duplicates so there is no problem combining two sides of an OR statement. It might be possible that MySQL will ignore the right side if it knows that the right side and the left side are exactly the same (MySQL can be pretty smart about these things). There is also a factor that MySQL tries to optimize queries as much as possible and may run the right side only some of the time. Justin Scott Giboney On Fri, Dec 23, 2011 at 4:48 PM, Wade Preston Shearer < [email protected]> wrote: > Am I correct in my understanding that the right side of an OR statement in > an MySQL query doesn't get evaluated unless the left side fails? I have a > query where the left-side case of an OR occurs often and produces an > efficient query and the right-side happens only occasionally and produces a > slower, less efficient query. If the query always checks both but only uses > the left if it is true, then I'd be better served to move it into two > queries. If it only checks the right-side condition if the left-side fails > though, then keeping it in one makes sense. > > _______________________________________________ > > UPHPU mailing list > [email protected] > http://uphpu.org/mailman/listinfo/uphpu > IRC: #uphpu on irc.freenode.net > _______________________________________________ UPHPU mailing list [email protected] http://uphpu.org/mailman/listinfo/uphpu IRC: #uphpu on irc.freenode.net
