 <p>Another approach is to use something like the following query, perhaps as a view. It will give you the most recent StatusID for each Person.</p> <pre><code>SELECT PersonID, StatusID FROM ( SELECT PersonID, StatusID, rank() OVER(PARTITION BY PersonID ORDER BY PersonStatusDate DESC) as rnk FROM tPersonStatusHistory ) A WHERE rnk = 1 </code></pre> <p>I'm not sure that this satisfies your requirement for performance, but it's something you could look into.</p>