 <p>First, you should use explicit <code>join</code> syntax. Second, it is suspicious whenever you have a <code>top</code> without an <code>order by</code>. So, your query as I see it is:</p> <pre><code>select TOP 1 @TopValue = t2.myDecimal from table1 t1 join table2 t2 on t1.ID = t2.table1ID where CONVERT( VARCHART(8), t1.Created, 112 ) = @stringYYYYMMDD and t1.Term = @Label" </code></pre> <p>You can speed this up with some indexes. But, before doing that, you want to change the date comparison:</p> <pre><code>where t1.Created &gt;= convert(datetime, @stringYYYYMMDD, 112) and t1.Created &lt; convert(datetime, @stringYYYYMMDD, 112) + 1 and t1.Term = @Label </code></pre> <p>Moving the function from the column to the constant makes the comparison "sargable", meaning that indexes can be used for it.</p> <p>Next, create the indexes <code>table1(Term, Created, Id)</code> and <code>table2(table1Id)</code>. These indexes should boost performance.</p>