# Analyser les requêtes

> Comment analyser les requêtes pour identifier les problèmes de performances. Marche à suivre.
>
> Source : https://www.pachadata.com/docs/howtos/diagnostic/analyser-les-requetes/
> Auteur : Rudi Bruchez · mis à jour le 2026-10-14
> Version Markdown de la page, pour les outils et les LLM. La page HTML fait référence.


Voici une checklist résumée de la méthodologie pour analyser les performances d'une requête ou d'une base de données SQL Server.

## 1. Regarder les IO -> SET STATISTICS IO ON

- Si beaucoup d’IO sur une table, est-ce qu’on a un index ? (https://youtu.be/BqmaDUumoxk)

## 2. Regarder le temps -> SET STATISTICS TIME ON

- SET STATISTICS IO, TIME ON (https://youtu.be/wThNVZciebQ)
- Différence entre temps CPU et temps total
- CPU < temps total => attentes – pas de la faute de la requête – par exemple blocages de verrous, lectures sur le disque, comportement du datareader (https://youtu.be/AbmUxVNF-Pc)
- CPU > temps total => parallélisme (https://youtu.be/pqaZPhpXt1w) – pas grave

## 3. Regarder le plan d’exécution après exécution.

- Y a-t-il une différence d’estimation de cardinalité ? C’est grave quand il estime trop peu.
- Utiliser de préférence Plan Explorer -- https://www.sentryone.com/plan-explorer
- Si différence – recalculer les statistiques (https://youtu.be/a-0JJNXdVsw, https://youtu.be/FEZSpL36O_w pour le recalcul dans le plan de maintenance)
- Ça pourrait être une variable de type table : si oui OPTION (RECOMPILE) ou SQL Server 2017.
- Ça peut être le moteur d’estimation (CE).
  - Si erreur d’estimation de cardinalité sur une requête complexe, essayer de jouer avec la version du CE.
  - `OPTION (USE HINT('FORCE_LEGACY_CARDINALITY_ESTIMATION'))`
  - `OPTION (USE HINT('ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS'))`
  - `OPTION (USE HINT('FORCE_DEFAULT_CARDINALITY_ESTIMATION'))`
  - `ALTER DATABASE SCOPED CONFIGURATION SET LEGACY_CARDINALITY_ESTIMATION = On;`

## 4. Analyser globalement les performances

- Utiliser les évènements étendus en filtrant sur la durée
- Utiliser les évènements étendus sans filtre un petit moment pour voir s’il y a des requêtes répétitives ou doublonnées.
- Regarder les statistiques de requête : https://github.com/rudi-bruchez/tsql-scripts/blob/master/diagnostics/execution-stats/dm_exec_query_stats.sql

### Utilisez le Query Store (depuis SQL Server 2016)

- [Session DataFrogs - Nicolas Souquet – Tout savoir sur le Query Store](https://youtu.be/Adwtl1QtYvI)
- [Session DataFrogs - Query Store, bientôt incontournable](https://youtu.be/EVchvLCk-IQ)




---

## L'auteur

Rudi Bruchez, consultant SQL Server indépendant depuis 2006 : audit de performance, optimisation, migrations, haute disponibilité et formation. Pour un audit ou une intervention sur votre serveur : https://www.pachadata.com/contact/ (audit à distance : https://www.pachadata.com/services/audit-sql-server-a-distance/).
