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: 
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.
You can use `Group By` if your grouping some data and then `Having` clause to select specific records.