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

Funktionsbaseret indeks i SQL SERVER 2005

Du skal tilføje en beregnet kolonne

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

Du kan derefter indeksere det, som du ville forvente.

Din funktion skal dog være deterministisk og præcis som defineret i http://msdn.microsoft.com/en-us/library/ms189292(v=sql.90).aspx . Din funktion bør opfylde disse krav, men du skal muligvis tilføje With SchemaBinding til funktionsdefinitionen.

Du kan muligvis også bruge en visning

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)

Ting, der indsætter skriver til bordet, ting, der læser, læser fra visningen. Dette afhænger af, at BEER_CODE er en primær nøgle.

SQL Server har ikke funktionsbaserede indekser på samme måde som Oracle har.




  1. Sådan tilføjes ikke null-begrænsning til eksisterende kolonne i MySQL

  2. dynamisk oprettelse af #temp-tabellen og derefter brugt til at indsætte dataene

  3. hvordan man automatisk indsætter fremmednøglereferencer i tabeller i mysql eller JDBC?

  4. Hvordan konverteres dato og klokkeslæt til unix-epokeværdi i Postgres?