huge performance issue with ActiveRecord::Base exists?

I was just running a relative simple exists? query:

Page.exists?(["id > ?",i])

which equates to

  SELECT COUNT(*) FROM `pages` WHERE (id > 1400000) LIMIT 1

You would think with a COUNT and a LIMIT 1, that things would be really fast, but its SUPER slow, its trying to count all the records greater than 1400000.

This is N times faster:

  SELECT * FROM `pages` WHERE (id > 1400000) LIMIT 1

Do you guys think this needs to be changed, or not worth changing COUNT(*) to just * even though its a "LIMIT 1" ?

COMPLETELY IGNORE this "issue", this was caused by an old overwrite of the exists? function that I had from years ago.

MY BAD!

I was just running a relative simple exists? query:

Page.exists?(["id > ?",i])

which equates to

SELECT COUNT(*) FROM `pages` WHERE (id > 1400000) LIMIT 1

You would think with a COUNT and a LIMIT 1, that things would be really fast, but its SUPER slow, its trying to count all the records greater than 1400000.

This is N times faster:

SELECT * FROM `pages` WHERE (id > 1400000) LIMIT 1

Do you guys think this needs to be changed, or not worth changing COUNT(*) to just * even though its a "LIMIT 1" ?

Which version of rails are you running? I've looked at the source of edge, 2-1-stable and 2-0-stable and for all those versions exists does not appear to use count. Are you sure the query is coming from there?

Fred

Fred, this was my mistake read, the post above yours.