Sometimes it is hard to trouble shoot or optimize your database and look for bottlenecks, this might help by grapping your top 20 for you to analyze.
Try running this code againt your MS SQL Server 2005 - 2008 database and start from there. Often you can identify and analyze the top 20 queries, stored procedures, views and look for missing or bad indexes, missing keys.
-- Top 10 longest running queries
SELECT DISTINCT TOP 20
t.TEXT QueryName,s.execution_count AS ExecutionCount,
s.max_elapsed_time AS MaxElapsedTime,ISNULL(s.total_elapsed_time / s.execution_count, 0) AS AvgElapsedTime,
s.creation_time AS LogCreatedOn,
ISNULL(s.execution_count / DATEDIFF(s, s.creation_time, GETDATE()), 0) AS FrequencyPerSec
FROM sys.dm_exec_query_stats s
CROSS APPLY sys.dm_exec_sql_text( s.sql_handle ) t
WHERE t.text not like '%-- Top 10 longest running queries%' -- You dont want to include this in your query do you?
ORDER BY
s.max_elapsed_time DESC