## Kedy použiť Pri ladení drahých dotazov, ako podklad pre ručný návrh indexu. ## Ako čítať výsledok Sleduj `user_seeks`, `avg_user_impact_pct`, stĺpce rovnosti (`equality_columns`), rozsahové (`inequality_columns`) a `included_columns`. Podobné návrhy zlúč do jedného indexu. > [!WARNING] > DMV nezohľadňuje cenu zápisov, návrhy bývajú duplicitné, poradie stĺpcov nie je optimalizované a po reštarte zmiznú. Nikdy nevytváraj indexy automaticky. **Oprávnenia:** `VIEW DATABASE STATE` (na SQL Server 2022 stačí aj `VIEW DATABASE PERFORMANCE STATE`). Spúšťa sa v cieľovej databáze. **Režim:** READ ONLY · **Verzia:** SQL Server 2016 – 2022 ## Súvisiace recepty - [Používanie indexov](script.php?id=27&s=pouzivanie-indexov-seeks-scans-lookups-updates)
Chýbajúce indexy – návrhy optimalizátora
Návrhy optimalizátora na chýbajúce indexy v aktuálnej databáze, zoradené podľa odhadovaného prínosu. Signál, nie hotový CREATE INDEX.
/* DeadlockCafe | Chýbajúce indexy – návrhy optimalizátora
Účel: Návrhy optimalizátora na chýbajúce indexy v aktuálnej databáze, zoradené podľa odhadovaného prínosu. Signál, nie hotový CREATE INDEX.
Režim: READ ONLY | SQL Server 2016 – 2022, on-premises
*/
SET NOCOUNT ON;
SELECT TOP (30) d.statement AS object_name,
gs.user_seeks, gs.user_scans,
CAST(gs.avg_total_user_cost AS decimal(18,2)) AS avg_total_user_cost,
CAST(gs.avg_user_impact AS decimal(18,1)) AS avg_user_impact_pct,
CAST(gs.user_seeks * gs.avg_total_user_cost * gs.avg_user_impact AS decimal(20,1)) AS relative_score,
d.equality_columns, d.inequality_columns, d.included_columns
FROM sys.dm_db_missing_index_group_stats AS gs
JOIN sys.dm_db_missing_index_groups AS g ON g.index_group_handle=gs.group_handle
JOIN sys.dm_db_missing_index_details AS d ON d.index_handle=g.index_handle
WHERE d.database_id = DB_ID()
ORDER BY gs.user_seeks * gs.avg_total_user_cost * gs.avg_user_impact DESC;