Ne mora index da bude jedinstven (UNIQUE), ali "sortira" podatke na nacin na koji tebi treba. Logicki su podaci sortirani po Primarnom Kljucu, a ubacivanje indexa pravi dodatne meta podatke koji tu pomazu da nadjes podatke po njima.
Recimo da imas tabelu T1
CREATE TABLE [dbo].[T1](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Pripadnost] [smallint] NULL,
[Tip] [smallint] NULL,
[Novac] [money] NULL,
[Datum] [money] NULL,
CONSTRAINT [PK_T1] PRIMARY KEY CLUSTERED
(
[Id] ASC
) ON [PRIMARY]
ti ces mnogo cesce traziti podatke po recimo PRIPADNOSTi, ili TIPu, a ne po IDu
select <nesto>
from T1
where Pripadnost=<parametar>
and Tip=<parametar>
Ovaj skript ti nalaze da napravis index nad te dve kolone, koji ce ubrzati tvoj WHERE iskaz.
CREATE NONCLUSTERED INDEX [IX_T1] ON [dbo].[T1]
(
[Pripadnost] ASC,
[Tip] ASC
) ON [PRIMARY]
SQL SERVER ovako pravi dodatne podatke, sortirane po kombinaciji ova dva polja, tako da se gore napisani WHERE lako i brzo snalazi u tom indeksu, a zatim poput pokazivaca, skace na pravo mestu u tabelu i uzima odgovarajuce podatke.
Indeksa mozes imati vise nad jednom tabelom.
Mislim da je ukratko, i pojednostavljeno... to = to.
Uhvatili ste me nespremnog