A documentação sugere ir com a configuração da propriedade "virualmode".
https://msdn.microsoft.com/en-us/library/15a31akc.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1
Há outro tópico interessante "Carregamento just in time".Implementando o modo virtual com carregamento de dados just-in-time no controle DataGridView do Windows Forms
https://msdn.microsoft.com/ pt-br/library/ms171624(v=vs.110).aspx
Você tem bons exemplos no link acima. Vale a pena olhar para eles.