A
select count(*) usually has to traverse at least an index tree to find the actual number of rows currently in the table. A quick test on Sybase on a fairly busy server shows that it can take up to 3 seconds to count the rows in a 4+ million row table, with a lot of the time spent fetching data pages into cache. Keep in mind that the database engine has to be able to run the
select count(*) where somecondition as well, for which no real short-cut is available, unless an appropriate index exists that can satisfy the WHERE clause.
Michael