Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Index basé sur les fonctions dans SQL SERVER 2005

Vous auriez besoin d'ajouter une colonne calculée

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

Vous pouvez ensuite l'indexer comme prévu.

Cependant, votre fonction doit être déterministe et précise comme défini dans http://msdn.microsoft.com/en-us/library/ms189292(v=sql.90).aspx . Votre fonction doit répondre à ces exigences, mais vous devrez peut-être ajouter With SchemaBinding à la définition de la fonction.

Vous pouvez également utiliser une vue

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)

Les choses qui insèrent des écritures dans la table, les choses qui lisent lisent à partir de la vue. Cela dépend du fait que BEER_CODE est une clé primaire.

SQL Server n'a pas d'index basés sur les fonctions de la même manière qu'Oracle.