Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Indice basato sulla funzione in SQL SERVER 2005

Dovresti aggiungere una colonna calcolata

Alter Table BEER_HERE Add Column XBEER_DATE As dbo.TRUNCATE_DATE(BEER_DATE)

Puoi quindi indicizzarlo come ti aspetteresti.

Tuttavia, la tua funzione deve essere deterministica e precisa come definito in http://msdn.microsoft.com/en-us/library/ms189292(v=sql.90).aspx . La tua funzione dovrebbe soddisfare questi requisiti, ma potrebbe essere necessario aggiungere With SchemaBinding alla definizione della funzione.

Potresti anche essere in grado di utilizzare una vista

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)

Cose che inseriscono le scritture nella tabella, cose che leggono le letture dalla vista. Ciò dipende dal fatto che BEER_CODE è una chiave primaria.

SQL Server non dispone di indici basati su funzioni allo stesso modo di Oracle.