## Kedy použiť Pred úvahou o odstránení indexu alebo pri pravidelnom index review. ## Ako čítať výsledok Index s veľkým `user_updates` a nulovými `user_seeks` / `user_scans` / `user_lookups` je kandidát na preskúmanie. `user_updates` je počet operácií, nie počet zmenených riadkov. > [!WARNING] > Štatistiky sa nulujú po reštarte, odpojení databázy a na starších buildoch aj po REBUILD. Index môže chrániť unikátnosť, slúžiť mesačnému reportu alebo sezónnemu procesu – nikdy ho nemaž len podľa jedného odberu. **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 - [Chýbajúce indexy](script.php?id=28&s=chybajuce-indexy-navrhy-optimalizatora) - [Fragmentácia indexov](script.php?id=4&s=fragmentacia-indexov)
Skript
Používanie indexov (seeks, scans, lookups, updates)
Ako často sa každý index v databáze číta (seek, scan, lookup) a koľkokrát sa udržiava pri zápisoch.
Parametre skriptu doplň a kopíruj hotový skript
/* DeadlockCafe | Používanie indexov (seeks, scans, lookups, updates)
Účel: Ako často sa každý index v databáze číta (seek, scan, lookup) a koľkokrát sa udržiava pri zápisoch.
Režim: READ ONLY | SQL Server 2016 – 2022, on-premises
*/
SET NOCOUNT ON;
SELECT SCHEMA_NAME(t.schema_id) AS schema_name, t.name AS table_name,
i.name AS index_name, i.index_id, i.type_desc,
i.is_unique, i.is_primary_key, i.is_unique_constraint,
ISNULL(u.user_seeks,0) AS user_seeks,
ISNULL(u.user_scans,0) AS user_scans,
ISNULL(u.user_lookups,0) AS user_lookups,
ISNULL(u.user_updates,0) AS user_updates,
u.last_user_seek, u.last_user_scan, u.last_user_update
FROM sys.tables AS t
JOIN sys.indexes AS i ON i.object_id=t.object_id
LEFT JOIN sys.dm_db_index_usage_stats AS u
ON u.database_id=DB_ID() AND u.object_id=i.object_id AND u.index_id=i.index_id
WHERE i.index_id > 0 AND i.is_hypothetical = 0
ORDER BY ISNULL(u.user_updates,0) DESC, schema_name, table_name;