which sql query is more efficient: select count(*) or select ... where key>value?

Posted by davka on Stack Overflow See other posts from Stack Overflow or by davka
Published on 2011-01-02T13:49:30Z Indexed on 2011/01/02 13:53 UTC
Read the original article Hit count: 135

I need to periodically update a local cache with new additions to some DB table. The table rows contain an auto-increment sequential number (SN) field. The cache keeps this number too, so basically I just need to fetch all rows with SN larger than the highest I already have.

SELECT * FROM table where SN > <max_cached_SN>

However, the majority of the attempts will bring no data (I just need to make sure that I have an absolutely up-to-date local copy). So I wander if this will be more efficient:

count = SELECT count(*) from table;
if (count > <cache_size>)
  // fetch new rows as above

I suppose that selecting by an indexed numeric field is quite efficient, so I wander whether using count has benefit. On the other hand, this test/update will be done quite frequently and by many clients, so there is a motivation to optimize it.

© Stack Overflow or respective owner

Related posts about sql

Related posts about mysql