Index en cluster ou non en cluster: différences clés avec l'exemple

Table des matières:

Anonim

Qu'est-ce qu'un index?

Un index est une clé construite à partir d'une ou plusieurs colonnes de la base de données qui accélère la récupération des lignes de la table ou de la vue. Cette clé aide une base de données telle qu'Oracle, SQL Server, MySQL, etc. à trouver rapidement la ligne associée aux valeurs de clé.

Deux types d'index sont:

  • Index groupé
  • Index non groupé

Dans ce tutoriel, vous apprendrez:

  • Qu'est-ce qu'un index?
  • Qu'est-ce qu'un index clusterisé?
  • Qu'est-ce que l'index non clusterisé?
  • Caractéristique de l'indice groupé
  • Caractéristiques des index non groupés
  • Un exemple d'index clusterisé
  • Un exemple d'index non clusterisé
  • Différences entre un index clusterisé et un index non groupé
  • Avantages de l'index clusterisé
  • Avantages de l'index non clusterisé
  • Inconvénients de l'index clusterisé
  • Inconvénients de l'index non clusterisé

Qu'est-ce qu'un index clusterisé?

L'index de cluster est un type d'index qui trie les lignes de données de la table sur leurs valeurs de clé. Dans la base de données, il n'y a qu'un seul index cluster par table.

Un index clusterisé définit l'ordre dans lequel les données sont stockées dans la table qui ne peut être triée que d'une seule manière. Ainsi, il ne peut y avoir qu'un seul index clusterisé pour chaque table. Dans un SGBDR, généralement, la clé primaire vous permet de créer un index clusterisé basé sur cette colonne spécifique.

Qu'est-ce que l'index non clusterisé?

Un index non clusterisé stocke les données à un emplacement et les index à un autre emplacement. L'index contient des pointeurs vers l'emplacement de ces données. Une seule table peut avoir de nombreux index non clusterisés car un index de l'index non clusterisé est stocké à différents endroits.

Par exemple, un livre peut avoir plus d'un index, un au début qui affiche le contenu d'un livre par unité tandis que le second index montre l'index des termes par ordre alphabétique.

Un index non-clustering est défini dans le champ non-ordering de la table. Ce type de méthode d'indexation vous aide à améliorer les performances des requêtes qui utilisent des clés qui ne sont pas affectées en tant que clé primaire. Un index non clusterisé vous permet d'ajouter une clé unique pour une table.

DIFFÉRENCE CLÉ

  • L'index de cluster est un type d'index qui trie les lignes de données de la table sur leurs valeurs de clé, tandis que l'index non clusterisé stocke les données à un emplacement et les index à un autre emplacement.
  • L'index clusterisé stocke les pages de données dans les nœuds feuilles de l'index, tandis que la méthode d'index non clusterisé ne stocke jamais les pages de données dans les nœuds feuilles de l'index.
  • L'index de cluster ne nécessite pas d'espace disque supplémentaire, tandis que l'index non cluster a besoin d'espace disque supplémentaire.
  • L'index de cluster offre un accès aux données plus rapide, par contre, l'index non cluster est plus lent.

Caractéristique de l'indice groupé

  • Stockage de données par défaut et trié
  • Utilisez une ou plusieurs colonnes pour un index
  • Vous aide à stocker les données et à les indexer ensemble
  • Fragmentation
  • Opérations
  • Balayage d'index groupé et recherche d'index
  • Recherche de clé

Caractéristiques des index non groupés

  • Stocker uniquement les valeurs de clé
  • Pointeurs vers les lignes d'index de tas / cluster
  • Permet l'accès aux données secondaires
  • Pont vers les données
  • Opérations de scan d'index et de recherche d'index
  • Vous pouvez créer un index non clusterisé pour une table ou une vue
  • Chaque ligne d'index de l'index non clusterisé stocke la valeur de clé non clusterisée et un localisateur de ligne

Un exemple d'index clusterisé

Dans l'exemple ci-dessous, SalesOrderDetailID est l'index clusterisé. Exemple de requête pour récupérer des données

SELECT CarrierTrackingNumber, UnitPriceFROM SalesDataWHERE SalesOrderDetailID = 6

Un exemple d'index non clusterisé

Dans l'exemple ci-dessous, un index non cloué est créé sur OrderQty et ProductID comme suit

CREATE INDEX myIndex ONSalesData (ProductID, OrderQty)

La requête suivante sera récupérée plus rapidement que l'index clusterisé.

SELECT Product ID, OrderQtyFROM SalesDataWHERE ProductID = 714

Différences entre un index clusterisé et un index non groupé

Paramètres Clustered Non groupé
Utiliser pour Vous pouvez trier les enregistrements et stocker l'index groupé physiquement en mémoire selon l'ordre. Un index non clusterisé vous aide à créer un ordre logique pour les lignes de données et utilise des pointeurs pour les fichiers de données physiques.
Méthode de stockage Vous permet de stocker des pages de données dans les nœuds feuilles de l'index. Cette méthode d'indexation ne stocke jamais les pages de données dans les nœuds feuilles de l'index.
Taille La taille de l'index clusterisé est assez grande. La taille de l'index non clusterisé est petite par rapport à l'index clusterisé.
Accès aux données Plus rapide Plus lent que l'index clusterisé
Espace disque supplémentaire Non requis Nécessaire pour stocker l'index séparément
Type de clé Par défaut, les clés primaires de la table sont un index en cluster. Il peut être utilisé avec une contrainte unique sur la table qui agit comme une clé composite.
Caractéristique principale Un index clusterisé peut améliorer les performances de la récupération des données. Il doit être créé sur les colonnes utilisées dans les jointures.

Avantages de l'index clusterisé

Les avantages / avantages de l'index clusterisé sont:

  • Les index clusterisés sont une option idéale pour les requêtes de type plage ou groupement avec max, min, count
  • Dans ce type d'index, une recherche peut aller directement à un point spécifique des données afin que vous puissiez continuer à lire séquentiellement à partir de là.
  • La méthode d'index en cluster utilise un mécanisme d'emplacement pour localiser l'entrée d'index au début d'une plage.
  • C'est une méthode efficace pour les recherches par plage lorsqu'une plage de valeurs de clé de recherche est demandée.
  • Vous aide à minimiser les transferts de page et à maximiser les accès au cache.

Avantages de l'index non clusterisé

Les avantages de l'utilisation d'index non clusterisé sont:

  • Un index sans cluster vous aide à récupérer rapidement les données de la table de base de données.
  • Vous aide à éviter les frais généraux associés à l'index clusterisé
  • Une table peut avoir plusieurs index non groupés dans le SGBDR. Ainsi, il peut être utilisé pour créer plusieurs index.

Inconvénients de l'index clusterisé

Voici les inconvénients / inconvénients de l'utilisation de l'index clusterisé:

  • Beaucoup d'inserts dans un ordre non séquentiel
  • Un index clusterisé crée de nombreux fractionnements de page constants, qui incluent des pages de données ainsi que des pages d'index.
  • Travail supplémentaire pour SQL pour les insertions, les mises à jour et les suppressions.
  • Un index cluster prend plus de temps pour mettre à jour les enregistrements lorsque les champs de l'index cluster sont modifiés.
  • Les nœuds feuilles contiennent principalement des pages de données dans l'index clusterisé.

Inconvénients de l'index non clusterisé

Voici les inconvénients / inconvénients de l'utilisation d'index non clusterisé:

  • Un index non clusterisé vous aide à stocker les données dans un ordre logique mais ne permet pas de trier physiquement les lignes de données.
  • Le processus de recherche sur un index non clusterisé devient coûteux.
  • Chaque fois que la clé de clustering est mise à jour, une mise à jour correspondante est requise sur l'index non cluster car il stocke la clé de clustering.