En entreprise, une requête lente peut coûter cher !!🔴
🔑 Les 3 Clés de l'Optimisation
1. Les Vues (Views)
À quoi ça sert ?
Simplifier les requêtes complexes et sécuriser l'accès aux données.
CREATE VIEW VentesFrance AS
SELECT
c.NomClient,
SUM(m.Montant) AS CA_Total,
COUNT(DISTINCT m.CommandeID) AS NbCommandes
FROM Clients c
JOIN Commandes m ON c.ClientID = m.ClientID
WHERE c.Pays = 'France'
GROUP BY c.NomClient;
Avantages :
- Réutilisation du code:
- Sécurisation des données sensibles
- Abstraction de la logique métier
2. Les Procédures Stockées
Performance boost : Exécution plan en cache !
CREATE PROCEDURE GetClientActivity
@ClientID INT,
@Annee INT
AS
BEGIN
SELECT
MONTH(DateCommande) AS Mois,
SUM(Montant) AS TotalAchats
FROM Commandes
WHERE ClientID = @ClientID
AND YEAR(DateCommande) = @Annee
GROUP BY MONTH(DateCommande)
END;
Gain de performance :
Où :
- : Nombre d'exécutions.
- : Temps de compilation à chaque exécution.
- : Temps d'accès au cache (~0.2s).
Bref, la formule devient :
3. Les Indexes
Mathématiquement, un bon index réduit la complexité :
Types d'index essentiels :
-- Index cluster (tri physique)
CREATE CLUSTERED INDEX IDX_Commandes_Date
ON Commandes (DateCommande);
-- Index non-cluster
CREATE NONCLUSTERED INDEX IDX_Clients_Pays
ON Clients (Pays)
INCLUDE (NomClient, Ville);
Équation d'efficacité :
🧪 Cas Réel d'Optimisation
graph TD
A[Requête lente: 15s] --> B{Analyse Execution Plan}
B --> C[Création index couvrant]
C --> D[Factorisation en procédure stockée]
D --> E[Resultat: 1.2s]
- Toujours tester avec
SET STATISTICS TIME ON
- Utiliser
WITH SCHEMABINDING
pour les vues critiques
📈 Résultats Obtenus
- Réduction du temps moyen des requêtes :
- Diminution des IO disque :
- Simplification du code métier
Top comments (0)