Slow database queries can be caused by many things...
1) Your data may be poorly designed and not efficiently linked together according to normalization rules.
2) Your queries themselves could be written in such a way that it forces SQL server to do a bunch of calculations that are not needed. You can verify this one by running SQL profiler and watch statements under the TSQL section titled "batchcompleted" then look at the reads/writes for each statement.
3) You could have bad indexes on your tables or your indexes need optimizing. The best way to keep your indexes in tip-top shape is by setting up a maintenance plan through enterprise manager.
The general rule for speed is also to make sure that your RAM is large enough to adequately fit the entire contents of the database within it. For example, if your database is 20 gigs you should have as close to 20 gigs of RAM... that way all data is held in memory for the fastest possible access.
You could also try breaking that 20 gigs across multiple databases. Perhaps you don't need it all in a single database, create one for logs and stats, maybe archive some of the older not readily used information, or some of the fields could be calculated on the fly perhaps?
I have put a great site for helping with SQL server problems, with some solutions I have mentioned here.
Good luck and hope it works out for you.