Sunteți pe pagina 1din 8

Ministerul Educaţiei, Culturii şi Cercetării al Republicii Moldova

Centrul de Excelenţă în Informatică şi Tehnologii Informaţionale

Catedra Informatica Aplicată

LUCRUL INDIVIDUAL NR.1

Tema: ”Indecșii în SQL.”

Realizat: Țurcan Alexandru


Grupa: I-1546
Profesor: Bulat V.

Nota: ________________

Chişinău, 2018
Cuprins
Indecșii......................................................................................................................3
Rolul Indecșilor........................................................................................................3
Indecsii CLUSTERED.........................................................................................5
Indecsi NONCLUSTERED.................................................................................5
Sintaxa pentru crearea Indecșilor..........................................................................6
Când nu se crează indecșii......................................................................................7
Concluzie:.................................................................................................................7
Bibliografie...............................................................................................................8

Chişinău, 2018
Indecșii
Indecșii sunt niste obiecte de tip schema care imbunatatesc timpul de cautare si access la
inregistrarile din baza de date. Indecsii sunt creati in mod explicit sau automat in anumite
conditii.

Modul in care indecsii sunt conceputi ii fac independent fizic si logic de baza de date ceea
ce se exprima prin faptul ca ei pot sa fie creati sau distrusi in orice moment fara a afecta structura
bazei de date sau asupra celorlalti indecsi.

De asemenea din partea de management transparent face parte si faptul ca daca o baza de
date este distrusa atunci si indecsii care au fost creati pentru ea sunt de asemenea distrusi.

Exista mai multe situatii care necesita crearea indecsilor in baza de date. Un index este
creat daca:

- o singura coloana contine o varietate foarte mare de valori si un numar mare de valori.

- campul din baza de date contine multe inregistrari de tip null

- campurile sunt folosite foarte frecvent in conditile de selectare a inregistrarilor sau in


cazuri de JOIN

- tabela pe care se creaza indexul este foarte mare si cererile in mod frecvent nu extrag o
cantitate mare de date (2-4%)

Rolul Indecșilor
- Rolul indecșilor este de a permite găsirea rapidă și eficientă a datelor, fără a citi întreg
tabelul

- Actualizarea unei tabele ce conține indecși este mai lentă pentru că trebuie actualizați și
indecșii

- Indecșii trebuie creați doar pentru coloane pe care se vor face căutări frecvente.

Rolul indecsilor: (accelereaza regasirea datelor)


-Accelereaza accesul la date
-Obliga unicitatea inregistrarilor (doar la coloane UNIQUE este indicat sa cream indecsi
, in special la coloanele folosite in mod frecvent;) )

Dezavantaje indecsi:
- Consuma spatiul discului .

Cand updatam o coloana/camp indexat , SQL Server updateaza indecsii asociati


Chişinău, 2018
Mentinerea indecsilor necesita timp si resurse. Nu create un index dk nu-l veti folosi frecvent nu-
si are rostul!!!!
Indecsii pe coloane ce nu-s UNIQUE (deci contin duplicate) nu-si au rostul!!!!!
Sp_helpindex – procedura stocata sistem care este executata asupra unei tabele.
Indecsi doar la date de tipul UNIQUE.
Un index este creat intr-o tabela pt.a gasi datele mult mai rapid si eficient.
Utilizatorul nu poate vedea indecsii , ei sunt folositi pt. a accelera cautarile/query-urile.
Obs. UPDATE la o tabela care contine indecsi dureaza mai mult decat o tabela ce nu contine
indecsi , deoarece indecsii necesita un updata.
Deci va trebui sa cream indecsi doar pe coloanele (si tabelele) care vor fi folosite frecvent la
cautari.
Deasemenea indecsi non-clustered au nevoie de clauza ORDER BY (pt.sortare) pe
cand indecsii clustered sunt implicit sortati (deci nu au nevoie de clauza ORDER BY).
CREATE INDEX –creeaza un index creat pt.campuri PRIMARY KEY si UNIQUE
(constrangeri), dar se pot crea si pt.chei externe,chei foreign (o coloana contine niste valori intr-o
tabela care se regasesc intr-o alta tabela2 cu acelasi nume de coloana si aceleasi valori).

Pentru stergerea unui index exemplu complet:


DROP INDEX Produse.Index1 –stergem index-ul cu numele Index1 din tabela Produse
Obs. DROP INDEX nu se poate folosi pt.campurile cu constrangerile de primary key sau
UNIQUE.
DROP INDEX nu poate fi folosit asupra tabelelor sistem.
Iata cum se poate crea un index (CREATE INDEX) si sterge un index (DROP INDEX)
. Dupa cum se observa index-ul este creat pt.o anumita coloana dintr-o anumita tabela. Motivul :
imbunatatirea cautarilor (cautarile frecvente pt.o coloana -acea coloana trebuie indexata) si
rapiditatea si eficienta query-urilor.
Obtinerea informatiilor despre un index
Se va folosi procedura stocata sistem sp_helpindex.
Deci scopul folosirii indecsilor pt o anumita coloana.
Daca avem milioane de inregistrari si vrem sa cautam intr-o coloana care are milioane
de valori vom face coloana respectiva un index si apoi facem cautare folosind clauza WHERE
iar timpul necesar query-ului va fi redus deoarece coloana respectiva a fost facuta index.
Pentru schimbarea numelui unui index se foloseste procedura stocata sp_rename. (sau din se
acceseaza object explorer, se selecteaza index-ul, F7 si apoi F2 pt.modificarea numelui).

Chişinău, 2018
Exista 2 tipuri de indecsi clustered si nonclustered (cei non-clustered asigura sortarea,
cei clustered sunt sortati automat, au avantajul ca cererile sunt executate mult mai rapid,
consuma mai putina memorie indecsi clustered si trebuie sa avem un singur index clustered daca
este definit deja unul trebuie sters acel index al tabelei pt.ca putem avea doar un singur index
clustered per tabela. Se va folosi optiunea DROP_EXISTING pt.stergerea index-ului clustered.)
Se pot afla intr-o tabela pana la 247 indecsi non-clustered. (dupa altii putem avea 249
nonclustered index per tabel.)
Ce campuri se indexeaza F.F.IMP:
– cheile primare
– cheile straine (FOREIGN KEYS dintr-o tabela)
– -cheile externe
– coloane accesate intr-o ordine de sortare
– coloane grupate impreuna in timpul agregarilor
Cand nu trebuie sa cream indecsi:
– Referinta dintr-un query
– Contine cateva valori UNIQUE. De exemplu un index al unei coloane cu 2 valori (male si
female), intoarce un procent mare de randuri.
– Campurile de tip text,ntext sau image nu pot fi indexate NEVER INDEX!!!
Exista 2 tipuri de indecsi CLUSTERED SI NONCLUSTERED
Indecsii CLUSTERED
– Reprezinta un index in care inregistrarile din campul respective sunt ordonate crescator! –
se poate realize un singur index cluster (deci o singura coloana va fi index clustered cu conditia
ca ea sa aiba coloanele ordonate crescator) O SINGURA TABELA POATE AVEA UN
SINGUR INDEX CLUSTER(pe o pagina ce contine date, datele vor fi stocate in ordinea
ascendenta)
– Verificati ca aveti spatiu de memorie necesar in BD cand create indecsi cluster
Indecsi NONCLUSTERED
– Este construit deasupra heap-ului ( ce contine o colectie de pagini) -> se vor folosi
identificatori pt.randuri in paginile indexate care vor conduce catre inregistrarile din paginile
respective
– Cand este construit deasupra unei tabele cu un index cluster, SQL Server foloseste o
cheie CLUSTER in paginile de indexare care vor ghida catre index-ul cluster
OBTINEREA INFORMATIILOR despre INDEX
Procedura stocata sp_helpindex (din SQL Server Enterprise Manager) obtine informatia index-
ului: nume index,tip index, optiuni pt.o tabela specifica

Chişinău, 2018
Use NorthWind
EXEC sp_helpindex Customers
Obtinerea informatiilor despre o tabela sp_help tablename
USE NorthWind
EXEC sp_help Customers
OPTIUNEA FILLFACTOR
-este aplicata doar cand este creat un index sau reconstruit
OPTIUNEA PAD_INDEX
Specifica procentul de completare al paginilor index non-leaf-level.
EXEMPLU FILLFACTOR
USE NorthWind
CREATE INDEX OrderID_ind
ON Orders(OrderID)
WITH PAD_INDEX, FILLFACTOR = 70
Exemplul de mai jos creeaza OrderID_ind index la campul OrderID in tabela Orders.
USE NorthWind
CREATE INDEX OrderID_ind
ON Orders(OrderID)
WITH PAD_INDEX, FILLFACTOR = 70
Trebuie sa mentinem indecsii pt. a asigura performanta optimal.
OBTINEREA INFORMATIILOR DESPRE INDECSI
Pentru a afla informatii despre indecsi se folosesc urmatoarele proceduri stocate sistem din
mssql:
Indecșii sunt creați în două feluri:

Automat: În momentul în care se creaza o cheie primara asupra tabelelor, in momentul în care se
creaza o restrictie ca inregistrarile din baza de date sa fie unice si in alte situatii asemanatoare.

Manual: Se pot defini indecsi manuali care nu trebuie sa contina o restrictie cum este cazul
indecsilor unici.

Sintaxa pentru crearea Indecșilor


CREATE INDEX index_name ON table_name (column_name)

Aici se permit valori duplicate Creare de indecși unici – valorile duplicate nu sunt permise

CREATE UNIQUE INDEX index_name ON table_name (column_name)

Chişinău, 2018
Când nu se crează indecșii
Cînd tabela pe care se doreste adaugarea este mica.

- Cînd coloanele pe care se adauga indecsii nu sunt folosite frecvent pentru executarea de
extrageri de inregistrari

-Cînd cererile de tip select in general extract un numar mare de inregistrari (mai mare de 2-4%)

- Cînd operatiuni de UPDATE sunt foarte des utilizate.

- Cînd coloanele indexate sunt referentiate ca parte integranta a unor expresii.

Concluzie:
Efectuînd această lucrare individuală pot sa deduc foarte multe lucruri și concluzii,dar cel
mai important consider că după finisarea ei apar deja unele deprinderi din domeniu, și aceasta
mi-a dat posibilitatea de a înțelege cu adevarăt importanța profesiei alese.
Cu ajutorul acestei lucrări individuale am putut înţelege mai bine ce este un indecs. Am
înţeles unde se folosesc indecșii și pentru ce se folosesc. Mi-au apărut unele idei pe viitor la care
mă gândeam înainte dar nu ştiam cum să le fac.
Lucarea Individuala reprezintă o parte componentă a procesului – educativ care este
importantă petru noi, deoarece anume în timpul lucrului individual ne aprofundăm cunostințele
acumulate pe parcursul orelor de SGBD.

Chişinău, 2018
Bibliografie
https://www.google.com/search?
biw=1366&bih=608&tbm=isch&sa=1&ei=o12tW8Uv0sfAAs_ekuAH&q=create+index+image+
sql&oq=create+index+image+sql&gs_l=img.3..35i39k1.17516.19312.0.19658.5.5.0.0.0.0.172.6
61.0j4.4.0....0...1c.1.64.img..1.4.658....0.aTycfsWDez8#imgrc=wj8yn9OOUIpypM:
http://elearning.usarb.md/blog/matveeva/files/2013/05/Indec%C5%9Fi-SQL.pdf

http://www.cig.ase.ro/prof/tamas/resurse/SGBD-ACCESS-RAPOARTE.pdf

Chişinău, 2018

S-ar putea să vă placă și