@Auction_God said:Now try that with a criterion.  The database keeps a counter of the number of rows in each table, so no how big the table gets the count(*) will be returned in O(1) time.  However, they probably have other rows in the db which should not be counted - e.g. maybe from their first test.  So they're counting all rows where insert date > "some date". SELECT COUNT(*) FROM Products.Items WHERE ChangedOn > '2009-03-15' AND ChangedOn < '2009-04-01' ----------- 93232 It takes 2 ms to do this query. Total rowcount is 1,409,172. @Auction_God said:See how long that takes 'ya !  (And it's no fair cheating and using cached results.  Make sure you change the "some date" each time or restart your db between timings). Why would you change the date? The timeframe of the submissions was clearly defined. Also, why would anyone restart the DB in a production environment? Now, granted, the database probably contains more than a million rows (more like 100 million), but even if a query takes 6 seconds you could still use it and cache the results for a short time. This would be reasonable IMHO.