Dynamic-Mess.com


"The world is a dynamic mess of jiggling things..."

Les gestion des index et clefs primaires - exemples avec MySQL

Article posté le 21-01-2015 dans la catégorie SQL

A- Les index

1) Définition

Un index sur une table est un champ de référence, destiné a faciliter et à accéler une recherche dont le critère serait ce champ, et tout particulièrement dans le cas où la recherche impliquerait plusieurs tables.

Les index sont indispensables à la création de cléfs étrangères ou primaires.

Les index présentent un inconvénient, c'est qu'ils prennent de la place en mémoire et ralentissent un peu le fonctionnement de la base.

2) Les différents types d'index

En plus des index simples, il existe trois autres types d'index :

  1. UNIQUE : Permet d'assurer que deux enregistrements n'auront pas de fois la même valeur ou combinaison de valeur. Cela est généralement couplée sur la clef primaire (voir plus bas). Exemple : le champ Id d'un article dans u blog. Il est unique.
  2. FULLTEXT : Utilisé sur le bases de données utilisant le moteur MyISAM, il s'applique uniquement sur les colonne de type CHAR, VARCHAR et TEXT. Il est intéressant pour réaliser de puissantes recherches dans un texte. 
  3. SPATIAL : Utilisé pour le stockage de données spatiales (coordonnées par exemple)

3) Un peu de code

Quelques exemples sous MySQL pour ajouter/supprimer des index, ici dans le cas de la modification d'une table. (Pour plus d'infos, voir la doc MySQL).

Avec un index simple :

ALTER TABLE MaTable
CREATE INDEX NomDeLindex (NomDuChamp)

Avec un index unique :

ALTER TABLE MaTable
ADD CONSTRAINT UNIQUE NomDeLindex (NomDuChamp)

Supprimer un index:

ALTER TABLE MaTable
DROP INDEX NomDeLindex

B- Les clefs primaires

Une clef primaire sert à identifier de manière unique un enregistrement. Il s'agit d'une contrainte d'unicité (et ne peut pas être NULL), qui peut être composée d'une ou plusieurs colonnes. 

En règle générale, par exemple pour les articles d'un blog, on utilisera pour clef primaire le champ Id, de type INT UNSIGNED, auto-incrémenté (donc dont la valeur est gérée par le SGBD).

Exemple :

ALTER TABLE MaTable 
ADD CONSTRAINT NomDeLaContrainte UNIQUE NomDuChamp

 

 


Tweet
comments powered by Disqus