După cum știți deja, există unele tipuri speciale de indici. Unul dintre aceste tipuri speciale de indici sunt vederi indexate, care sunt discutate în acest articol.
Definiția de vizualizare conține întotdeauna o cerere, acesta acționează ca un filtru. Dacă o idee nu indexează, baza de date Engine creează în mod dinamic un set de rezultate din toate interogările care accesul la prezentare. (Expresia „dinamic“ înseamnă aici că conținutul modificat al tabelului va fi întotdeauna afișat în vizualizarea corespunzătoare.) În plus, în cazul în care ecranul conține calcule pe una sau mai multe coloane într-un tabel, calculul se efectuează pentru fiecare acces la prezentare.
Dacă SELECT prezentare de instrucțiuni procesarea unui număr mare de rânduri de la una sau mai multe tabele, crearea dinamică a setului de rezultate de interogare poate reduce cererea nivelul de performanță. În cazul în care această noțiune este adesea folosit într-o interogare, nivelul de performanță poate fi îmbunătățită în mod semnificativ prin crearea unui indice de cluster pe punctul de vedere. Crearea unui indice de cluster înseamnă că sistemul se materializează date dinamice în paginile structurii nodului index.
Baza de date Engine vă permite să creați indecși pe vizualizări. Astfel de reprezentări sunt numite vederi indexate. Setul de rezultate returnat prin depunerea unui indice de cluster, stocate în baza de date, în același mod ca și tabel cu un indice de cluster. Acest lucru înseamnă că nodurile frunze de B + -tree indicele grupat conține paginile de date.
vizionări indexării create de extensii de instrucțiuni sintactice CREATE INDEX și CREATE VIEW. CREATE INDEX în loc de numele tabelului indică numele de vedere. Sintaxa CREATE VIEW extinde oferta SCHEMABINDING.
Creați o vizualizare indexate
vizualizare indexată este creat în două etape:
Creați o vedere printr-o instrucțiune CREATE VIEW cu SCHEMABINDING.
Se creează un index pus în cluster pe punctul de vedere.
Următorul exemplu ilustrează primul pas în crearea vedere indexată - crearea de prezentare. Acest exemplu presupune că tabelul Works_on este foarte mare.
Tabelul de bază Works_on bază de date SampleDb EnterDate conține o coloană, care este data de începere a ocupării forței de muncă a proiectului în cauză. Toți angajații care au început să lucreze la proiect în luna specificate, pot fi selectate folosind prezentarea prezentată în exemplu. Pentru un eșantion din setul de rezultate Database Engine nu se poate folosi un tabel de index, deoarece indicele pentru coloana EnterDate va determina valoarea acestei coloane la data completă, și nu doar pentru o lună. În acest caz, se poate folosi de vedere indexată, crearea, care este prezentat în exemplul de mai jos:
Pentru a crea o vedere indexată, trebuie să creați o coloană lipsită de ambiguitate (unic) indicele grupat (e) al prezentării. (Așa cum am menționat mai devreme, indicele grupat este singurul tip index care conține valorile de date din paginile nodurilor.) După crearea unui astfel de sistem de baze de date de index alocă memorie pentru acest punct de vedere, atunci puteți crea orice număr de indici non-cluster, pentru că acum această reprezentare este considerată ca masa (de bază).
O vizualizare indexată poate fi creat numai dacă este determinist, și anume vizualizare va reveni întotdeauna același set de rezultate. Pentru a face acest lucru, următorii parametri trebuie să SET declarație pentru a atribui o valoare ON:
În plus, parametrul trebuie să fie alocate NUMERIC_ROUNDABORT la off.
Verificați dacă parametrii corespunzător din lista anterioară poate fi instalat în mai multe moduri, care sunt discutate mai târziu. Pentru a crea o vedere indexată, punctul de vedere trebuie să îndeplinească următoarele cerințe:
toate utilizate în reprezentarea funcției (atât de sistem și definit de utilizator) ar trebui să fie deterministă, adică pentru aceleași argumente care ar trebui să se întoarcă mereu același rezultat;
prezentare ar trebui să se refere doar la tabelele de bază;
prezentarea și link-uri către masa (e) de bază trebuie să aibă același proprietar și fac parte din aceeași bază de date;
Reprezentarea trebuie să fie creată cu opțiunea SCHEMABINDING. Această opțiune se conectează reprezentare la schema care conține tabelele de baza care stau la baza prezentării;
funcții definite de utilizator, care se face referire de către punctul de vedere trebuie să fie creat cu propunerea SCHEMABINDING;
instrucțiune SELECT în reprezentarea nu trebuie să conțină următoarele propuneri, parametri, și alte elemente: DISTINCT, Union, TOP, ORDER BY, MIN, MAX, COUNT, SECUNDAR, SUM (expresii pentru admiterea unei valori NULL) subinterogările sau tabele derivate.
Satisfăcând toate aceste cerințe pot fi verificate prin proprietățile parametrului IsIndexable objectproperty cu proprietăți așa cum se arată în exemplul de mai jos. Dacă funcția returnează o valoare de 1, punctul de vedere îndeplinește toate cerințele pentru crearea unui index pentru ea:
Modificarea structurii unei vederi indexate
Pentru a elimina indicele cluster unic pe vizualizare indexată, trebuie, de asemenea, să eliminați toate indexurile sale non-cluster. După îndepărtarea unui sistem de reprezentare indice de cluster-l consideră ca o vedere normală. Când ștergeți vedere, de asemenea, indexate șterge toate indexurile sale.
Dacă doriți să modificați reprezentarea de obicei pe o indexată, atunci el trebuie să creați un index cluster. Pentru a face acest lucru, trebuie să specificați mai întâi oferta SCHEMABINDING. Prezentarea poate fi îndepărtată și apoi re-crea, specificând propunerea SCHEMABINDING CREATE SCHEMA, sau puteți crea o imagine diferită, care are același text ca și punctul de vedere existent, dar are un alt nume. Când creați o prezentare cu un nume diferit, trebuie să se asigure că această prezentare îndeplinește toate cerințele pentru vizualizări indexate, descrise în secțiunea anterioară.
Editarea informațiilor legate de vizualizări indexate
Verificați dacă orice declarație de opțiune SET este activată. prin utilizarea funcției proprietăți sessionproperty. Dacă funcția returnează o valoare de 1, valoarea specificată este setată (adică are o valoare pe). Exemplul următor ilustrează utilizarea acestei funcții este de a verifica valoarea parametrului QUOTED_IDENTIFIER:
Cel mai simplu mod este de a utiliza o vedere de management sys.dm_exec_session dinamic. tu deoarece permite pentru a obține valorile tuturor opțiunilor instrucțiune SET, folosind doar o singură interogare. (. Din nou, în cazul în care valoarea coloanei este 1, atunci parametrul corespunzător activat) Exemplul următor demonstrează utilizarea acestei funcții pentru a obține valori ale instrucțiunilor primilor patru parametri SET:
Pentru a afla dacă o idee materializat, și anume, dacă acesta folosește spațiu pe disc sau nu, puteți utiliza procedura de sistem sp_spaceused. Rezultatul interogării în exemplul de mai jos arată că view_enter_month reprezentare utilizează o zonă de memorie pentru date și pentru un anumit indice:
Această interogare returnează următorul set de rezultate:
vizualizări Beneficii indexate
De asemenea, este posibil pentru a crește nivelul de productivitate ale reprezentărilor complexe frecvent accesate interogări de a utiliza punctele de vedere indexate are alte două avantaje:
Toate aceste modificări sunt reflectate în punctele de vedere indexate relevante.
Poate cea mai importantă caracteristică de opinii indexate este că solicitarea de a prezenta nici o indicație clară a utilizării indicelui în acest punct de vedere. Cu alte cuvinte, în cazul în care cererea conține o trimitere la coloanele din tabelul de bază (sau tabele), care există și în punctele de vedere indexate, iar optimizatorul de interogare stabilește că cel mai bun mod de a executa interogarea se va utiliza o vedere indexată, el alege prezentarea indicilor, astfel ca indexurile de masă, atunci când o cerere nu se referă la ele în mod explicit.
Atunci când creați o vizualizare indexată set rezultatul este stocat pe disc (în același timp cu crearea indicelui). Astfel, toate datele care se schimbă în tabelele de bază sunt, de asemenea, modificate în rezultatul corespunzător stabilit de o vedere indexată.
În plus față de toate beneficiile care pot fi obținute prin utilizarea de opinii indexate, există, de asemenea, un potențial dezavantaj: indicii indexate puncte de vedere sunt, în general, mai dificil de a menține decât indicii de masă de bază. Motivul pentru aceasta este faptul că structura este unic vedere indexată indicele de cluster este mai complicată decât structura indicelui de masă de bază corespunzătoare.
Poate îmbunătăți semnificativ performanța următoarele solicitări suplimentare în cazul în care punctele de vedere indexate la care se referă:
cereri care se ocupa de un număr mare de rânduri și tranzacții cuprind un compus sau funcțiile agregate;
care unesc funcțiile de operare și de agregare sunt adesea efectuate în una sau mai multe interogări.
Dacă cererea se referă la reprezentarea convențională, și este necesar sistemul de baze de date pentru a procesa un număr mare de rânduri de operațiune se alăture, optimizator selectează de obicei mai mică decât metoda optimă de conectare. Dar dacă acest punct de vedere pentru a defini un indice de cluster, nivelul de interogare de performanță poate fi îmbunătățit în mod semnificativ, astfel cum optimizatorul de interogare se poate utiliza metoda cea mai potrivită. (Același lucru este valabil și pentru funcțiile agregate.)
Chiar dacă cererea, care se referă la reprezentarea convențională, și se ocupă de un număr mare de linii, oricum, în cazul utilizării frecvente a unei astfel de cereri, în vederea aplicării indexată poate fi foarte util. Același lucru se aplică la un grup de cereri, care se conectează la aceeași masă, sau folosind același tip de funcții agregate.