So lately when I run queries on huge tables I’ll use the the top 10 * notation like so:
select top 10 * from BI_Sessions (nolock)
where SessionSID like 'b6d%'
and CreateDate between '03-15-2012' AND '05-18-2012'
I thought that it let’s it run faster, but it doesn’t seem so , this one took 4 minutes(or is that OK time)?
I guess I’m curious about whether the top functionality happens after it pulls all the data anyway(which would seem like it’s inefficient).
thanks
It entirely depends on the query, with the exceptino of “Top 0”. “Top 0” does return much faster.
In your case, the query has to look through the rows in a huge table to find rows that match the WHERE clause. If no rows are found, the number of rows being returned doesn’t help. If the rows are at the end of the table scan, then the number of rows being returned doesn’t help.
There are certain cases with more complicated queries where the “top” could affect performance. There is a difference between optimizing overall and for the first row returned. I’m not sure if SQL Server’s optimizer recognizes this difference.