Windows Server, VMWare, Active Directory, SCCM, SQL Server, Sharepoint, PowerShell....
Странице
Pretraži:
Translate
среда, 11. јун 2014.
уторак, 10. јун 2014.
SQL index
Jedna od veoma važnih aktivnosti prilikom
dizajniranja baze podataka je pravilno definisanje tabela. Prilikom
ovoga SQL server ne vodi računa o fizičkom smeštaju podataka, osim
ograničenja tipom podatka i definisanjem primarnog ključa. Ali ovim se
ne vrše nikakve optimizacije nad tabelama radi bržeg odziva, tj.
vraćanja rezultata upita. Za ovo je zadužen mehanizam indeksa tabela
koje mi moramo da definišemo. Zamislite slučaj da nema indeksa, prilikom
nekog upita server bi morao da prođe kroz sve slogove u tabeli u cilju
pronalaska odgovarajućih slogova. U slučaju ogromnih baza podataka,
vreme potrebno za vraćanje rezultata upita je mnogo duže nego kada se
definišu indeksi.
Kao primer navešćemo analogiju između SQL baze
podataka i medicinske kartoteke. Slučaj kada nemamo definisane indekse,
analogan je neuređenoj kartoteci, tj. kartoteci koja nije složena ni po
jednom osnovu. Kada bi recimo medicinska sestra trebalo da pronađe neki
karton osiguranika, verovatno bi krenula sa jednog kraja i redom
pretraživala, sve dok ne bi naišla na odgovarajući. Kada se cela
kartoteka složi recimo po početnom slovu prezimena, pretraga za
određenim kartonom je neuporedivo brža. Sada zamislite da se kartoteka
može poređati i po: godini rođenja, mestu rođenja, polu i sl. Na ovaj
način smo kreirali kataloge, pa kada tražimo određeni karton, prvo
pogledamo u katalog, vidimo gde se nalazi karton (na kojoj polici –
adresa) i idemo odmah da ga nađemo. Sve ovo je analogno indeksima baze
podataka, što znači da su indeksi katalozi o podacima u određenim
tabelama. Indeksi su još jedna vrsta informacije koja se mora čuvati i
za njih se mora odvojiti memorijski prostor unutar baze podataka.
Određivanje indeksa se vrši u odnosu na sam
kontekst baze podataka, zbog najbolje optimizacije definisanih upita.
Osnovna SQL sintaksa za kreiranje indeksa je sledeća:
CREATE INDEX /naziv_indeksa/ ON /naziv_tabele/ (naziv_polja1, naziv_polja2…);
Evo kako bi indeksirali tabelu o nekakvim proizvodima koji pored drugih obeležja imaju i obeležje „Šifra artikla“, te ćemo po ovom obeležju indeksirati tabelu:
CREATE INDEX Index_SifraPro ON Artikli (Sifra);
Пријавите се на:
Постови (Atom)