Bonjour,
en parcourant le net à la recherche d'information je me suis créer ce petit script que je trouve bien pratique pour analyser les indexes manquants dans certaines zones de programmes.

J'aimerais juste un avis sur l’interprétation des 3 dernières colonnes, notamment unique_compiles. Je visualise mal ce qu'est une compilation dans une requête, et par extension pourquoi le nombre de recherches n'est pas identique au nombre de compilations.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
SELECT
	COUNT(*) OVER (PARTITION BY statement,mig.index_group_handle) AS NbColonnesIndex
	,NbCTbl.NbColonnes NbColonnesTotal
	,mig.index_group_handle,
	statement AS [database_scheme_table],
	column_id , column_name, column_usage,
	migs.user_seeks, migs.user_scans,
	migs.last_user_seek, migs.avg_total_user_cost,
	migs.avg_user_impact
	,migs.unique_compiles,migs.user_scans,migs.user_seeks
 
FROM		sys.dm_db_missing_index_details AS mid
INNER JOIN	sys.dm_db_missing_index_groups AS mig		ON mig.index_handle = mid.index_handle
INNER JOIN sys.dm_db_missing_index_group_stats AS migs	ON mig.index_group_handle=migs.group_handle
CROSS APPLY sys.dm_db_missing_index_columns (mid.index_handle)
cross apply(
		Select Count(*) NbColonnes from sys.columns C_ where C_.object_id=MID.object_id
	) NbCTbl
 
where statement like '%maBase%'
 
ORDER BY unique_compiles desc 
		,migs.avg_user_impact DESC
		,mig.index_group_handle
		,mig.index_handle
		,column_id