You could introduce paging into the grid, and only extract from the database the records which you are going to display. Another approach would be to extract data, cache it, and then access the cache - but in this case first time round would still be slow.
If extracting a large data set is the problem, I would consider only extracting the items for the current page.
With MySQL you can do this in the following approach
SELECT * FROM [TABLE] LIMIT 5,10;