Simple. Don't try and stuff 800K rows into the DGV, not even in virtual mode.
As a user, if you made me wade through that many rows, I'd close the application, uninstall it, and then try and suppress the urge to hunt you down and beat you senseless.
Yes, that's how bad an idea it is.
Filter the result set down to something users will tolerate. Since the screen can only show about 50 rows (depending on screen and font size), why are you stuffing 800,000 rows into it??
But, if you must, here's a little woalkthrough on using
Virtual Mode[
^] in the DGV.