[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