[SQL Server] Divers Requêtes pour gérer les index

-- Trouver la liste des Index pour une table

EXEC sp_helpindex 'MaTable'

-- Afficher la liste des pages pour une table

dbcc ind('MaBase',MaTable,1)

dbcc ind('MaBase','NomObjet',0) -- Row Data et IAM

dbcc ind('MaBase','NomObjet',1) -- Toutes les pages

dbcc ind('MaBase','NomObjet',-1) -- Row Data et IAM pour tous les index

dbcc ind('MaBase','NomObjet',-2) -- IAM seuls

dbcc ind('MaBase','NomObjet',2) -- Index 2 et plus...

-- Page Type 1 = données

-- Page Type 2 = index

-- Page Type 3 = TEXT_MIXED

-- Page Type 4 = TEXT_TREE

-- Page Type 10 = IAM

--Une page IAM (Index Allocation Map) mappe les étendues d'une portion de 4 gigaoctets (Go) d'un fichier de base de données utilisées

--par une unité d'allocation. Une unité d'allocation peut être de trois types.

-- Afficher le contenu d'une page de données

dbcc traceon(3604)

dbcc page('DemoIndexation',1,146,3)

--Les paramètres sont : Base de données, Numéro fichier, Numéro page, Mode.

--Le mode pouvant être 1,2 ou 3.

--Trouver les lignes déplacées

select forwarded_record_count from

sys.dm_db_index_physical_stats(db_id('MaBase'),object_id('dbo.MaTable'),null,

NULL,'DETAILED')

--Compiler un index

ALTER INDEX [IX_MonIndex] ON [dbo].[MaTable] REBUILD PARTITION = ALL

-- Afficher les informations de fragmentation pour les données et les index

DBCC SHOWCONTIG("[dbo].[InvoiceHeaderTextLines]"WITH ALL_INDEXES