Consider yourself a user of the site. Would you like to see 5 million records at a time? No one would. That is why the concept of paging was introduced.
Now choosing the control is based on your requirements.
ASP.NET Data-Bound Web Server Controls Overview[
^] - this page provides you brief overview of what each control can do. Choose from them based on your requirements. For example Repeater control is very light weight and does not have built-in layout. You can control the UI from the ground up.
Another important point is how you get the data from the database - all at once; only required data for each page; some number of records say 1000 and hit db again if user navigates further (Note - the no. of pages can be decided by getting the count of matching records). This decision is again very much based on your requirements. For example - if my data do not change frequently, I would get a lot of records or all of it at a go and save it into a Cache. If the records are same for all the users, I would even output Cache the page for some time.
So basically there are lot of design decisions that you need to make here. You haven't given much details so that's the best I can help. But I hope this shall get you started. :thumbsup: