Non è necessario disporre di una colonna calcolata per "cercare in una tabella" le righe che corrispondono a un anno. Scrivi la clausola where utilizzando invece un intervallo e metti un indice nella colonna della data.
select SomeColumn
from YourTable
where ActivityDate >= '20110101' and
ActivityDate < '20120101'
Se vuoi usare un int (anno) come argomento della query invece di due stringhe puoi usare dateadd
. Assicurati solo di non applicare alcuna funzione/manipolazione alla colonna ActivityDate perché SQL Server non sarà in grado di utilizzare l'indice se lo fai.
declare @Year int = 2011
select SomeColumn
from YourTable
where ActivityDate >= dateadd(year, @Year-1900, 0) and
ActivityDate < dateadd(year, @Year-1899, 0)