


Some jobs performed by the client can easily be taken over by the server; other jobs can result in additional outlay if they have to be performed by the server. If you have an adequate server configuration, you can be confident that the server database will have no trouble adding and updating data rows, partially updating indexes, scanning indexes and, within certain limits, scanning entire table columns.
Bottlenecks can also occur in a server database when large tables are copied, when queries are issued that duplicate one or more tables or attach a large number of joins to a large number of hits, and when a large number of users simultaneously access and lock data rows in a small number of tables.
Consequently, upsizing is beneficial to applications that edit a specific segment of the database that is relatively static or applications that mainly add new data rows to the database. Applications that search a large data set and expect to obtain manageable result sets for local editing take particular advantage of the strengths of client/server computing.
The database can perform many functions without having to transfer the relevant data rows to the application program. Here are two examples:
If the application needs to know the number of data rows to which a specific criterion applies, it can use an appropriate SELECT statement and then query the number of data rows in the result set. However, it is more economical to use the COUNT aggregate function directly in order to obtain the number. If it is more important to know whether a result set is empty or not than to know the exact number of rows contained in the result set, it is better to use the original SELECT statement. This statement only checks whether the number of result rows is greater or less than 0 (The number can be -1 if the size of the result set has not yet been determine; the value 0 indicates an empty result set). Subsequent calls of MoveLast(), GetFirst(), or GetNext() actually build larger result sets, causing wainting times.
A wide range of processing times can also be achieved when updating data rows. Using a SELECT statement, the application can create a dynaset containing the data rows to be updated and update them one after the other using the edit method. However, it is better to formulate an appropriate UPDATE statement immediately in order to allow the server database to perform the updates. This is a clever way to prevent the data rows that are to be updated from being transferred to the database.


