Background
We have developed a sharepoint 2010 enterprise solution - application that basically uses sharepoint lists in order to store the details.
In order to get the information out we use Caml queries and display the data basically outside of the normal 'view'
I guess this is a Server Side Object Model using webforms. The list will keep a record (same as sql server) of the records.
Problem
The queries look (roughly) like this
SPQuery query = new SPQuery();
query.RowLimit = 500;
// get all availability records that are in-progress or due,
// ignore past periods...
query.Query =
"<OrderBy>" +
"<FieldRef Name=\"UnavailableFrom\" Ascending=\"FALSE\"/>" +
"</OrderBy>" +
"<Where>" +
"<And>" +
"<Eq><FieldRef Name=\"Clinician\" LookupId=\"TRUE\" /><Value Type=\"User\">" + user.ID + "</Value></Eq>" +
"<Geq><FieldRef Name=\"UnavailableTo\" /><Value Type=\"DateTime\" IncludeTimeValue=\"FALSE\">" + SPUtility.CreateISO8601DateTimeFromSystemDateTime(requestedDate) + "</Value></Geq>" +
"</And>" +
"</Where>";
SPListItemCollection items = availabilityList.GetItems(query);
So my question is how is this interpreted behind the scenes. Does Sharepoint get all the records and then limit or does it work much like sql does. Get me some rows and then stop at the limit?
There is another case where I'm not doing a limit but then doing a count. What happens in this scenario. Could I run into difficulty in say a few years down the line when the tables get larger - say over 5000.
I've read stuff online which says that lists have trouble when they go over a certain amount, but that might be because of display in the 'sharepoint view'. Then again I've also read that they are built for this kind of usage.
I know the document storage, if used correctly with folders and such is ok. Do the lists follow the same rules?