Articles

sys.dm_db_missing_index_details (Transact-SQL)

Posted by admin
  • 03/20/2017
  • 2 minutes to read
    • W
    • r
    • c
    • M
    • s
    • +5

Applies to: SQL Server (all supported versions) Azure SQL Database

Returns detailed information about missing indexes, excluding spatial indexes.

în Azure SQL Database, vizualizările de gestionare dinamică nu pot expune informații care ar avea impact asupra conținutului bazei de date sau nu pot expune informații despre alte baze de date la care utilizatorul are acces. Pentru a evita expunerea acestor informații, fiecare rând care conține date care nu aparțin entității găzduite conectate este filtrat.

numele coloanei Tipul de date descriere
index_handle int identifică un anumit indice lipsă. Identificatorul este unic pe server. index_handle este cheia acestui tabel.
database_id smallint identifică baza de date în care se află tabelul cu indexul lipsă.
object_id int identifică tabelul în care lipsește indexul.
equality_columns nvarchar(4000) lista separată prin virgulă a coloanelor care contribuie la predicatele de egalitate ale formularului:
tabel.column = constant_value
inechality_columns nvarchar(4000) lista separată prin virgulă a coloanelor care contribuie la predicatele inegalității, de exemplu, predicatele formei:
tabel.coloana > constant_value
orice operator de comparație, altul decât”=”, exprimă inegalitatea.
inclus_columns nvarchar(4000) lista separată prin virgulă a coloanelor necesare ca coloane de acoperire pentru interogare. Pentru mai multe informații despre acoperirea sau coloanele incluse, consultați Crearea indexurilor cu coloanele incluse.
pentru indexurile optimizate pentru memorie (atât hash, cât și nonclustered optimizate pentru memorie), ignorați included_columns. Toate coloanele tabelului sunt incluse în fiecare index optimizat pentru memorie.
declarație nvarchar(4000) numele tabelului în care lipsește indexul.

Comentarii

informații returnate de SYS.dm_db_missing_index_details este actualizat atunci când o interogare este optimizat de interogare de optimizare, și nu este persistat. Informațiile index lipsă sunt păstrate numai până când SQL Server este repornit. Administratorii bazei de date ar trebui să facă periodic copii de rezervă ale informațiilor index lipsă dacă doresc să le păstreze după reciclarea serverului.

pentru a determina din ce grupuri de indici lipsă face parte un anumit index lipsă, puteți interoga vizualizarea gestionare dinamică SYS.dm_db_missing_index_groups prin echiparea acesteia cu SYS.dm_db_missing_index_details pe baza coloanei index_handle.

notă

setul de rezultate pentru acest DMV este limitat la 600 de rânduri. Fiecare rând conține un index lipsă. Dacă aveți mai mult de 600 de indici lipsă, ar trebui să abordați indexurile lipsă existente, astfel încât să le puteți vizualiza pe cele mai noi.

utilizarea informațiilor Index lipsă în declarațiile CREATE INDEX

pentru a converti informațiile returnate de SYS.dm_db_missing_index_details într-o declarație CREATE INDEX atât pentru indexurile optimizate pentru memorie, cât și pentru cele bazate pe disc, coloanele de egalitate ar trebui să fie puse înaintea coloanelor de inegalitate și împreună ar trebui să facă cheia indexului. Coloanele incluse trebuie adăugate la instrucțiunea creare INDEX utilizând clauza includere. Pentru a determina o ordine eficientă pentru coloanele de egalitate, ordonați-le pe baza selectivității lor: listați mai întâi coloanele cele mai selective (cea mai stângă din lista coloanelor).

pentru mai multe informații despre indexurile optimizate pentru memorie, consultați indexurile pentru tabelele optimizate pentru memorie.

consistența tranzacției

dacă o tranzacție creează sau scade un tabel, rândurile care conțin informații index lipsă despre obiectele abandonate sunt eliminate din acest obiect de gestionare dinamică, păstrând consistența tranzacției.

permisiuni

pe SQL Server, necesită VIEW SERVER STATE permisiune.
pe obiectivele de servicii SQL Database Basic, S0 și S1 și pentru bazele de date din bazine elastice, este necesar contul Server admin sau un Azure Active Directory admin. Pe toate celelalte obiective SQL Database service, permisiunea VIEW DATABASE STATE este necesară în baza de date.

A Se Vedea, De Asemenea,

Related Post

Leave A Comment