I ditto chip's remarks. Just last week i took a query from 20 minutes down to 3 seconds. All I needed to do was to add indexes to a couple tables.
You must first find where your app is taking the most amount of time.
As macleod states, ONLY return data from the database that you are using. Not just with WHERE clauses, but also columns of data. If you have ANY 'select * from...' then you need to change it to ONLY return the columns you need.
All of your database interaction should occur through stored procedures, using the ADO Command object.
Your database should be properly indexed. Many books have been written on the topic of indexing. I suggest you start by making sure fields all primary keys are indexed (they are already with SQL Server), and all Foreign Keys should indexed. If performance still isn't good enough, then try indexing fields that appear in where clauses.
Try minimizing round trips to the database. By using stored procedures, you can almost always reduce the round trips to 1. Sometimes you need to get creative, but this should be your goal. If you have any loops in your VB code that call the database within the loop, this should be your first priority.
On the VB side, make sure you are NOT doing a lot of string manipulations. If you are, and need to do string manipulations, consider using arrays to store smaller strings. Then manipulate those.
If you are returning large recordset from the database, and you've already eliminated unnecessary columns and rows, then consider using ADODB.Field object to access the data. In some cases, this can speed things up by 40%.
-George
Strong and bitter words indicate a weak cause. - Fortune cookie wisdom