the better question is why you think you need a report with 600K or more records in it? who is going to use it? no-one can possibly manually review that many records accurately; they might be able to skip over it for trends or something, but it is too large for human review.
It's time to do a little business requirements gathering to address the underlying needs for the report instead.
I would strongly recommend changing the report to be multiple alternate reports, that identify the exceptions that people would look for in that 600/700K records instead;
So if people actually use that report to say, "hey this field is blank and it shouldn't be", then produce an alternate report for that; if someone else uses that report to see rows related in a certain way, create another report for that.
Lowell