Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Funktionsbasierter Index in SQL SERVER 2005

Sie müssten eine berechnete Spalte hinzufügen

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

Sie können es dann wie erwartet indizieren.

Ihre Funktion muss jedoch deterministisch und präzise sein, wie in http://msdn.microsoft.com/en-us/library/ms189292(v=sql.90).aspx . Ihre Funktion sollte diese Anforderungen erfüllen, aber Sie müssen möglicherweise With SchemaBinding zur Funktionsdefinition hinzufügen.

Möglicherweise können Sie auch eine Ansicht verwenden

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)

Zeug, das Einfügungen schreibt, schreibt in die Tabelle, Zeug, das liest, liest aus der Ansicht. Dies hängt davon ab, ob BEER_CODE ein Primärschlüssel ist.

SQL Server hat keine funktionsbasierten Indizes wie Oracle.