Musisz dodać kolumnę obliczeniową
Alter Table BEER_HERE Add Column XBEER_DATE As dbo.TRUNCATE_DATE(BEER_DATE)
Następnie możesz go zindeksować zgodnie z oczekiwaniami.
Jednak funkcja musi być deterministyczna i precyzyjna zgodnie z definicją w http://msdn.microsoft.com/en-us/library/ms189292(v=sql.90).aspx . Twoja funkcja powinna spełniać te wymagania, ale może być konieczne dodanie With SchemaBinding do definicji funkcji.
Możesz także użyć widoku
Create View V_BEER_HERE As Select BEER_CODE, BEER_DATE, dbo.TRUNCATE_DATE(BEER_DATE) As XBEER_DATE From BEER_HERE
Create Unique Clustered Index PK_V_BEER_HERE On V_BEER_HERE (BEER_CODE)
Create Index I_XBEER_DATE On V_BEER_HERE (XBEER_DATE)
Rzeczy, które wstawiają zapisy do tabeli, rzeczy, które czytają odczyty z widoku. To zależy od tego, czy BEER_CODE jest kluczem podstawowym.
SQL Server nie ma indeksów opartych na funkcjach w taki sam sposób jak Oracle.