QUOTE(fyrestorm @ 15 Jan, 2007 - 06:54 AM)

I found out that I can just do a
SELECT MAX(ROWNUM) FROM tbl
and that would return the number of rows.
Not quite. That will give you the number of rows used in the storage of the table. If any rows have been deleted, then you will have a higher number than the actual rows used, since any deleted rows will be empty. (Higher numbered rows are not renumbered when previous rows are deleted.)
Furthermore, subsequent inserts will use those empty rows before adding new rows. So, if you insert 100 rows into a new table and then delete rows 25-75 and then insert 15 rows, max(rownum) will give you 100 even though there are only 65 rows. And the most recently added row has a rownum of 40.
Do the tables have a primary key, like "id"? If so, count(id) might be a lot faster than count(*). Also, if you have access to it, take a look at the system table. (It's called 'system'.) Just DESC it and go from there. It will provide some good info for you.
Wayne