[ matobj @ 24.04.2010. 10:18 ] @
Pozdrav,

zanima me moram li staviti indexe na polja koja mi sluze kao foreign keys?

Dakle imam npr tabelu Knjige i na njoj polja id (koje je index), naziv i polje kojavrsta (to polje mi sluzi kao foreign key za drugu tabelu)
E sad trebam li i na to polje "kojavrsta" staviti index (u tom polju ce biti samo vrijednosti npr. 1 i 0)?

I drugo pitanje. Ako trebam staviti indexe na ta polja koja su foreign (ako ih imam vise), dali je bolje napraviti ovako:

Code:

CREATE NONCLUSTERED INDEX [Knjige_idx3] ON [dbo].[Knjige]
  ([KojaVrsta])
WITH (
  PAD_INDEX = OFF,
  DROP_EXISTING = OFF,
  STATISTICS_NORECOMPUTE = OFF,
  SORT_IN_TEMPDB = OFF,
  ONLINE = OFF,
  ALLOW_ROW_LOCKS = ON,
  ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [Knjige_idx4] ON [dbo].[Knjige]
  ([KojiAutor])
WITH (
  PAD_INDEX = OFF,
  DROP_EXISTING = OFF,
  STATISTICS_NORECOMPUTE = OFF,
  SORT_IN_TEMPDB = OFF,
  ONLINE = OFF,
  ALLOW_ROW_LOCKS = ON,
  ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO


ili je bolje ovako - da ih zajedno stavim u "jedan" index:

Code:

CREATE NONCLUSTERED INDEX [Knjige_idx11] ON [dbo].[Knjige]
  ([KojaVrsta], [KojiAutor])
WITH (
  PAD_INDEX = OFF,
  DROP_EXISTING = OFF,
  STATISTICS_NORECOMPUTE = OFF,
  SORT_IN_TEMPDB = OFF,
  ONLINE = OFF,
  ALLOW_ROW_LOCKS = ON,
  ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO


Uf nadam se da ce netko skuziti sta je pjesnik mislio reci :)

[ sule99 @ 26.04.2010. 08:38 ] @
Obično ako polje sadrži samo dvije vrijednosti, kao što je kod tebe slučaj (rekao si 0 i 1) onda nema potrebe stavljati index nad tom kolonom. Indexi se stavljaju obično nad kolonama nad kojima često vršiš pretragu i koje imaju različite vrijednosti, da bi onda ta pretraga bila brža i efikasnija. Ima na forumu dosta tema o indexima pa malo potraži i pročitaj o tome.

Za ovo drugo ovisi šta ti treba. Ako koristiš selekt u kojem se nalaze obije kolone (KojaVrsta i KojiAutor) onda ti je bolje koristit drugi tip indexa, a ako u selektima koristiš odvojeno te kolone onda je bolje kreirati index nad svakom kolonom posebno. Također, ovo ne znači da ćeš riješiti stvar jer možda je potrebno staviti još neke index-e osim ovih spomenutih.

i ne nije potrebno da nad poljem koje je strani ključ bude definiran index, ako je primarni onda je automatski dodjeljen i index.

pozz
[ matobj @ 26.04.2010. 14:59 ] @
Zahvaljujem na odgovoru