Question: I want to run a simple query to get the "n" oldest records in the table. (It has a creation\_date column).

How can i get that without using "order-by". It is a very big table and using order by on entire table to get only "n" records is not so convincing.

(Assume n << size of table)

Answer: 
I haven't tested this concept before but try and create an index on the creation\_date column. Which will automatically sort the rows is ascending order. Then your select query can use the orderby creation\_date desc with the Limit 20 to get the first 20 records. The database engine should realize the index has already done the work sorting and wont actually need to sort, because the index has already sorted it on save. All it needs to do is read the last 20 records from the index.

Worth a try.
Create an index on `creation_date` and query by using `order by creation_date asc|desc limit n` and the response will be very fast (in fact it cannot be faster). For the "latest n" scenario you need to use `desc`.

If you want more constraints on this query (e.g `where state='LIVE'`) then the query may become very slow and you'll need to reconsider the indexing strategy.