• You could be seeing a number of different things. It could be simple contention on resources, other processes are reading/writing to the table you need, so you're waiting, or the query uses a lot of CPU and some other query that needs the CPU is causing you to wait. That can be extremely variable and won't be immediately apparent from one running of a query to the next. It could be that, because you're scanning the table due to that function on the column in the WHERE clause, you have to load everything into cache and sometimes it's available in cache, so it returns quickly, but other times it has aged out of cache to support other processes that are also scanning the table (because if you don't know that functions on columns when filtering is a major performance hit, I'll bet it's all over your code) so it has to reload the cache, slowing things down. It could be other stuff. But everyone has already given you the best possible answers, get rid of the function on the WHERE clause, and start using the execution plan to understand what is happening within the query.

    "The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood"
    - Theodore Roosevelt

    Author of:
    SQL Server Execution Plans
    SQL Server Query Performance Tuning