What do you all consider the most efficient way to process through large amounts of data?
There is really on ONE best way...especially if you are going to be pulling from a number of different tables and it may require a number of different queries....a CLR stored procedure. This let's you still program in .NET, but the work takes place at the server. However, this will only work for SQL Server. Otherwise you will have to create stored procs in the database language you are using.
Here is an example of performance increase, we have a program that deals with entering payments that come back on an EOB. We released our first blush sitting on top of VFP and it cratered if the EOB was very large....not to mention slow. We now have this totally on SQL Server and using CLR stored procs and it is basically instantaneous. We have another scenario where the end-user is posting the claims, and there were literally 18+ queries that took place each time in order to check all the exceptions, etc. to get the correct fees, and so forth. This totally died in VFP, but by using the CLR stored procs, it is literally as fast as you can type the code....it is incredible!
The last example I will give you relates to our prescription data, there are some tables with millions of records which have to be queried and compared to check for items such as drug-interactions. Pulling this back to the client would never work, but by using the CLR stored procedure, it is basically as fast as you can type again.
In the current beta, though there is no documentation yet, there is also a new feature that allows a single query to the server to bring back multiple result sets (assuming the database supports this [i.e. SQL Server]). I have one example where I have a single query to the server but load 6 business objects...one trip...no stored procs...and FAST!
Dim cmd As New SqlCommand("SELECT * FROM Customers WHERE cs_pk = @cs_pk;" & _
"SELECT * FROM CustomerOrders WHERE or_cs_pk = @cs_pk")
'-- Add the parms
cmd.Parameters.AddWithValue("@cs_pk", MyCustomerPk).SqlDbType = SqlDbType.Int
'-- Now execute the query and load the BOs
MicroFour.StrataFrame.Business.BusinessLayer.FillMultpleDataTables(cmd,CustomersBO, CustomerOrdersBO)
I know that you are using DB2 in certain conditions, so this is an issue and will definitely require you to "think out of the box." DB2 is a more cumbersome and more limiting environment to work within. I am not as familiar with it so I do not know if it supports the multiple result sets or not.
All of your questions are valid, but trying to determine if ADO or LINQ to SQL will help is actually not the issue here. First, we use ADO within the BO...secondly, LINQ to SQL is only going to strong-type your queries, and has nothing to do with performance really. The whole issue with large data is generally getting it back from the server, the number of trips, and how the query is formulated. Also, different scenarios require different solutions. This is why I mentioned several options above.
have to adjust pricing for a very large volume of records, needing to update or insert 1-6 at a time for a given combination of criteria from a total record count of about 200,000.
In this case, you shouldn't be bringing all 200,000 records back to your side. If you know what needs to be changed, you are better off working in a much smaller data set (i.e. the pk, code, and fee) then have the update take place back on the server. If the end-user has to enter all 200,000 fees, then this is going to happen with one or a few at a time, not all 200,000. So I would imagine that you already know what needs to be changed, so you could create a CLR stored procedure (or TSQL if you want pain
) and then have all of this work take place on the server so the data never makes it to the client...just the results and the information that the end-user needs.
Whoa...that was a big post, but I hope it give you some ideas 
P.S. Using SQL Server versus VFP we have had in some cases 100 times better performance...SQL Server is WAY faster! It all comes down to how you deal with the data.