On Thu, 27 Sep 2007 07:48:02 +0300, Henrik Krohns wrote:

> On Thu, Sep 27, 2007 at 03:27:51AM +0000, micah wrote:
>> On Wed, 26 Sep 2007 17:54:05 -0700, John D. Hardin wrote:
>> 
>> > On Wed, 26 Sep 2007, Micah Anderson wrote:
>> > 
>> >> SELECT count(*)
>> >>                FROM bayes_token
>> >>               WHERE id = '4'
>> >>                 AND ('1190846660' - atime) > '345600';
>> > 
>> > Who the hell wrote *that* query? Is MySQL smart enough to rearrange
>> > that equation to give an indexable comparison?
>> 
>> That comes from /usr/share/perl5/Mail/SpamAssassin/BayesStore/SQL.pl
>> line 243. It seems to calculate the expire delta, but in a way that
>> can't use an index.
>> 
>> Maybe that query should be changed from:
>> 
>> AND (? - atime) > ?"

returns: 1039123

>> 
>> to:
>> 
>> AND atime < ? + ?"

returns: 1039231
 
> I think you mean:
> 
> AND atime < ? - ?

returns: 0
 
> It does make a difference in rows checked, 129266 vs 1280748.

It seems like the one that returns the same result as the original is the 
right one here, not the one that returns zero results.

micah

ps - yes the difference between the first and second result are not the 
same, but thats due to the atime changing, they are much more similar 
than 1039123 is to 0.

Reply via email to