Rechercher

AdRé Blog

  • Accueil
  • A propos
  • Liens
  • RSS
Index

Influence du type d’index sur un Update

Posté par : Seb 

11

sept

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

sept

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

Translator

French flagItalian flagChinese (Simplified) flagEnglish flagGerman flagSpanish flagJapanese flagArabic flagRussian flagNorwegian flag

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
  • WordPress.org

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

  • Mana dans Configurer un serveur de temps fais…
  • julia dans Installation et configuration de WS…
  • Oni dans Installation d'une Dedibox LAMP sou…
  • Emilie dans Restaurer un iPhone 3G de iOS 4 à …
  • LaMachine dans 5 tâches courantes d'administratio…
  • kornemuz dans Configurer un serveur de temps fais…

Sujets les plus commentés

  • Restaurer un iPhone 3G de iOS 4 à 3.1.3 sous Snow Leopard - 54
  • Installation de Cacti sur Windows/IIS 6 - 23
  • Erreur d'installation de WSUS 3.0 SP2 - 12
  • pfsense et OpenVPN pour road warriors - 11
  • Installation et configuration de WSUS 3.0 SP2 - 9
  • Installation d'une Dedibox LAMP sous Ubuntu - 7