I was able to delete 19 million rows from my table of 21 million rows in matter of minutes. Here is my approach.
If you have a auto-incrementing primary key on this table, then you can make use of this primary key.
Get minimum value of primary key of the large table where readTime < dateadd(MONTH,-7,GETDATE()). (Add index on readTime, if not already present, this index will anyway be deleted along with the table in step 3.). Lets store it in a variable 'min_primary'
Insert all the rows having primary key > min_primary into a staging table (memory table if no. of rows is not large).
Drop the large table.
Recreate the table. Copy all the rows from staging table to main table.
Drop the staging table.