[ jmix23 @ 27.08.2009. 15:09 ] @
Imam jednu tabelu u bazi na SQL server 2005 na osnovu koje sam napravio View koji koristim za izradu izvestaja...e sad, posto prilikom pokretanja samog izvestaja veoma dugo traje iscitavanje podataka(oko 32000 recorda) iz tog view-a hteo sam na neki nacin da ubrzam taj proces. Posle malo guglanja sam shvatio da to moze da se ostvari preko indeksiranja same tabele, tj. njenih kolona, ali ono sto nisam uspeo da shvatim je KAKO? Tabela i View vec postoje i sad bi me zanimalo kako da izvrsim indeksiranje tabele i sta u stvari predstavlja to indeksiranje (znam samo da sluzi za brzu pretragu jer su za svaki record jedinstveni), zato bih zamolio one strpljive da mi objasne sam pojam indeksiranja i kako bih sve to mogao implementirati...

Unapred hvala
[ M E N E @ 30.08.2009. 20:40 ] @
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.