Rechercher

AdRé Blog

  • Accueil
  • A propos
  • Liens
  • RSS
Index

Influence du type d’index sur un Update

Posté par : Seb 

11

Sep

On lit souvent qu’un index a des effets néfastes sur les performances des requêtes en Update. J’ai réalisé un micro-benchmark sur une de nos tables internes afin de déterminer cet impact de manière un peu plus précise.

La table utilisée est une table de production de 8 555 648 lignes, pesant 550 Mo et ayant 8 colonnes. Une de ces colonnes est un champ Email unique et une autre est la date d’intégration dans la base au format datetime.

La requête que j’utilise est :

Update R_Temp.dbo.Email
set Date_In='04/09/2008'
where Email in ('test@gmail.com')
and Date_In is null

Voici le plan d’exécution estimé sur la table sans index :

Plan d'exécution estimé sans index

Comme il n’y a pas d’index, SQLServer doit procéder à un Table Scan, c’est-à-dire parcourir entièrement la table afin de trouver les lignes correspondant à la requête. Voici les coûts de ce Scan :

Estimated I/O Cost : 52,1454
Estimated CPU Cost : 4,70565
Estimated Operator Cost : 56,8511
Estimated Subtree Cost : 56,8511


Continuer à lire "Influence du type d’index sur un Update"

Tags : Index, SQL Server
0 commentaire

Influence du type d’index sur un Select

Posté par : Seb 

6

Sep

Pour améliorer les performances des requêtes SQL la solution la plus souvent avancée est de « créer un index ». Cela n’est malheureusement pas aussi simple, les index n’optimisant pas certains types de requêtes, sans compter qu’il existe deux types majeurs d’index dont les avantages et les inconvénients varient. Il faut donc toujours procéder à une réflexion complète sur l’intérêt même de ces index par rapport aux problèmes qu’ils peuvent poser, mais aussi effectuer une série de tests afin de vérifier que les index ont bien une influence positive sur les performances des requêtes utilisées. Même une simple requête Select peut ne pas bénéficier d’un index.

Pour illustrer cela j ‘ai effectué un micro-benchmark sur SQLServer 2005 pour comparer les performances d’une table sans index (heap), d’un index ordonné (clustered) et d’un index non ordonné (nonclustered) sur la requête suivante :

Select count(*) from R_Temp.dbo.EMAIL where Email like ('frederic%')

La table compte 8 555 648 lignes, pèse 550 Mo et est constituée de 8 colonnes. Le champ Email est unique.

Voici le plan d’exécution estimé de cette requête sur la table sans index :

Plan d'exécution estimé sur la table sans index

SQLServer doit ici parcourir toute la table (Table Scan) pour trouver les lignes correspondant à la requête et le coût est donc très élevé : elle s’exécute en 2,5 s sur mon serveur. 


Continuer à lire "Influence du type d’index sur un Select"

Tags : Index, SQL Server
0 commentaire

Mots clés

Backup Bureau à distance Contrôleur de domaine Déploiement Disaster recovery Linux Logiciel Monitoring MySQL OpenVPN Operations Manager 2007 pfSense PHP RAID Réplication SQL Server SQL Server 2005 VPN Windows 2003 WSUS

Meta

  • Inscription
  • Connexion
  • Flux RSS des articles
  • RSS des commentaires
  • Site de WordPress-FR

Blogs mis à jour

  • SQL Fool

    Fermer l’aperçu

    Loading...
  • The Deployment Guys

    Fermer l’aperçu

    Loading...
  • Benoît Sautière

    Fermer l’aperçu

    Loading...
  • Advisec Blog

    Fermer l’aperçu

    Loading...
  • Ask the Directory Service Team

    Fermer l’aperçu

    Loading...
  • Fabrice Meillon

    Fermer l’aperçu

    Loading...
  • MSSQL Tips

    Fermer l’aperçu

    Loading...
  • CSS SQL Server Engineers

    Fermer l’aperçu

    Loading...
  • SQL Server Storage Engine

    Fermer l’aperçu

    Loading...
  • I Want Some Moore

    Fermer l’aperçu

    Loading...
  • The WSUS Support Team

    Fermer l’aperçu

    Loading...
  • Stéphane Papp

    Fermer l’aperçu

    Loading...
  • Windows Networking

    Fermer l’aperçu

    Loading...
  • Blogmotion

    Fermer l’aperçu

    Loading...

Sujets récents

  • Alignement de partitions pour SQL Server
  • Fusionner deux dépôts SVN sous Ubuntu
  • Utiliser SSH et Remote Desktop avec Visio
  • Gestion des backups fichiers et MySQL sous Ubuntu
  • Restaurer un iPhone 3G de iOS 4 à 3.1.3 sous Snow Leopard
  • Installation d’une Dedibox LAMP sous Ubuntu

Commentaires récents

  • CHEMEL dans Installation de Cacti sur Windows/I…
  • AdminJunior dans Installation de Cacti sur Windows/I…
  • JP dans Injecter un pilote dans une image W…
  • Lena78 dans Problème de réplication des parta…
  • Arnaud dans Problème de réplication des parta…
  • feodor dans Alignement de partitions pour SQL S…

Sujets les plus commentés

  • Restaurer un iPhone 3G de iOS 4 à 3.1.3 sous Snow Leopard - 56
  • Problème de réplication des partages SYSVOL et NETLOGON - 35
  • Installation de Cacti sur Windows/IIS 6 - 26
  • Installation et configuration de WSUS 3.0 SP2 - 16
  • Erreur d'installation de WSUS 3.0 SP2 - 14
  • pfsense et OpenVPN pour road warriors - 11