sql >> Databasteknik >  >> RDS >> Sqlserver

Funktionsbaserat index i SQL SERVER 2005

Du skulle behöva lägga till en beräknad kolumn

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

Du kan sedan indexera det som du kan förvänta dig.

Din funktion måste dock vara deterministisk och exakt enligt definitionen i http://msdn.microsoft.com/en-us/library/ms189292(v=sql.90).aspx . Din funktion bör uppfylla dessa krav, men du kan behöva lägga till With SchemaBinding i funktionsdefinitionen.

Du kanske också kan använda en vy

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)

Saker som infogar skriver till bordet, saker som läser läser från vyn. Detta beror på att BEER_CODE är en primärnyckel.

SQL Server har inte funktionsbaserade index på samma sätt som Oracle har.




  1. MySQL SELECT endast inte null-värden

  2. Två mysql_fetch_array-satser i

  3. Söker på uttrycksindex

  4. Hur gör jag löpande totaler från andra kolumnen