Aller au contenu

Guide de bonnes pratiques SQL / SQL Server


guide de bonnes pratiques SQL Server

Voici quelques bonnes pratiques SQL Server, classées par domaine

1. Modélisation & Conception

  • Normaliser intelligemment : éviter les redondances inutiles tout en gardant en tête les besoins de performance (parfois une dénormalisation ciblée est préférable).
  • Utiliser des types de données appropriés (pas de NVARCHAR(MAX) pour 50 caractères).
  • Nommer clairement les objets (tables, colonnes, index) pour faciliter la maintenance.
  • Éviter les colonnes calculées persistantes inutiles si elles peuvent être gérées en requête ou vue.
  • Prévoir les clés primaires stables et courtes (idéalement entières et indexées).

2. Indexation

  • Créer des index adaptés aux requêtes fréquentes (éviter l’over-indexation).
  • Utiliser les index couvrants pour réduire les lectures disque.
  • Mettre à jour les statistiques régulièrement (AUTO_UPDATE_STATISTICS activé + maintenance plan).
  • Surveiller les index inutilisés et les index dupliqués pour les supprimer.
  • Limiter les index sur les colonnes fortement mises à jour (coût en écriture).

3. Écriture des requêtes

  • Sélectionner uniquement les colonnes nécessaires (SELECT col1, col2 au lieu de SELECT *).
  • Utiliser les jointures appropriées (INNER, LEFT, etc.) et éviter les cartésiens involontaires.
  • Filtrer tôt dans la requête pour limiter les lignes traitées.
  • Privilégier les fonctions natives plutôt que du code T-SQL trop complexe en UDF scalaires.
  • Éviter les fonctions sur colonnes dans les clauses WHERE (ça empêche l’usage d’index).
  • Utiliser les paramètres plutôt que la concaténation pour éviter l’injection SQL et bénéficier du cache plan.

4. Transactions & Verrouillage

  • Garder les transactions aussi courtes que possible pour réduire la contention.
  • Utiliser la bonne isolation transactionnelle (READ COMMITTED, SNAPSHOT, etc.) selon le besoin.
  • Vérifier les deadlocks et ajuster la logique ou l’ordre des opérations.
  • Ne pas utiliser BEGIN TRAN sans COMMIT ou ROLLBACK clair.

5. Maintenance

  • Mettre en place un plan de sauvegarde/restauration testé (ne pas attendre une panne pour tester la restauration).
  • Surveiller la fragmentation des index et réorganiser/réindexer selon les seuils.
  • Garder les logs sous contrôle (taille, archivage).
  • Surveiller les bases orphelines ou inutilisées.
  • Documenter les modifications de schéma.

6. Sécurité

  • Principe du moindre privilège (pas de sa pour tout le monde).
  • Utiliser l’authentification Windows si possible.
  • Masquer ou chiffrer les données sensibles (Always Encrypted, TDE, etc.).
  • Auditer les connexions et changements critiques.
  • Éviter le code SQL dynamique non paramétré.

7. Surveillance & Performance

  • Activer et consulter le Query Store pour suivre les régressions de performance.
  • Surveiller les requêtes lentes (sys.dm_exec_query_stats, Extended Events).
  • Analyser les plans d’exécution pour identifier les scans non désirés.
  • Mettre en place des alertes SQL Agent (erreurs critiques, espace disque, blocages longs).
  • Documenter les paramètres système (MAXDOP, Cost Threshold, memory settings).

Diagnostiquer, optimiser, maintenir

Votre SQL SERVER sur mesure

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *