This is more optimal for quick, low-memory usage retrieval of large data volumes as it does not load all the data into memory all in one go - with the SqlDataAdapter approach, the DataSet/DataTable would be filled with all the data so if there is a lot of rows & columns, that will require a lot of memory to hold.