sql >> Base de Datos >  >> RDS >> Sqlserver

Índice basado en funciones en SQL SERVER 2005

Debería agregar una columna calculada

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

A continuación, puede indexarlo como cabría esperar.

Sin embargo, su función debe ser determinista y precisa como se define en http://msdn.microsoft.com/en-us/library/ms189292(v=sql.90).aspx . Su función debe cumplir con estos requisitos, pero es posible que deba agregar With SchemaBinding a la definición de la función.

También puede usar 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)

Cosas que insertan escrituras en la tabla, cosas que leen desde la vista. Esto depende de que BEER_CODE sea una clave principal.

SQL Server no tiene índices basados ​​en funciones de la misma manera que Oracle.