Rechercher : dans
Par :

{MySQL} Question sur la fonction INDEX

Dernière réponse le 8 jun 2009 à 19:30:09 alter, le 8 jun 2009 à 17:11:20 
 Signaler ce message aux modérateurs

Bonjour,
Dans la table ci-dessous, quel est l'intérêt d'indexer un nom plutôt que le ID ?
CREATE TABLE test (
id INT NOT NULL,
name CHAR(30) NOT NULL,
description VARCHAR(150)
PRIMARY KEY (id),
INDEX name (name)
);

Configuration: Linux Fedora
MySQL 5.0

Meilleures réponses pour « {MySQL} Question sur la fonction INDEX » dans :
Comment fonctionne Picasa VoirPicasa est un logiciel de gestion et de retouche de photographies numériques, disponible en français depuis 2006. Fonctionnalités Ce logiciel permet aussi de recadrer les photos, d’en arranger les couleurs, et de les retoucher de façon assez simple...
[MySQL] Comment monitorer MySQL en temps réel VoirVous êtes administrateur d'une base de données MySQL et vous souhaitez analyser en temps réel le fonctionnement de MySQL afin de diagnostiquer les éventuels problèmes, suivre la charge de fonctionnement du serveur ? PhpMyAdmin permet de voir les...
SQL - Création d'index VoirQu'est-ce qu'un index? Un index est un objet complémentaire (mais non indispensable) à la base de données permettant d'"indexer" certaines colonnes dans le but d'améliorer l'accès aux données par le SGBDR, au même titre qu'un index dans un livre ne...
Clusters VoirNotion de cluster Un « cluster » (en français « grappe ») est une architecture composée de plusieurs ordinateurs formant des noeuds, où chacun des noeuds est capable de fonctionner indépendamment des autres. Il existe deux principaux usages des...
MySQL - Installation sous Windows VoirPrésentation de MySQL MySQL est un Système de Gestion de Bases de Données (SGBD) fonctionnant sous Linux et Windows. Depuis la version 3.23.19, MySQL est sous Licence GPL (aussi bien sous Linux que Windows), ce qui signifie qu'il peut être utilisé...

1

le père, le 8 jun 2009 à 17:20:09

Bonjour

Le nom n'est pas indexé plutôt que l'id, car l'id est une KEY et KEY est synonyme de INDEX.
Donc les deux sont indexés en fait

Répondre à le père

2

alter, le 8 jun 2009 à 18:38:58

Merci pour la réponse. Mais un doute persiste parce que j'ai voulu faire un exemple qui n'est pas adaptée à ma question. Je voulais plutôt demander, d'après les 2 tables ci-dessous, quel est l'intérêt d'indexer un nom (categorie_name) plutôt que le ID (categorie_id) ? (Dans l'ex du dessus en effet je comprends qu'il n'y a pas de réel utilité à marquer "INDEX (name)" en plus de" PRIMARY KEY (id)".)
Si je me réfère à ta réponse, je devrais donc dire que, dans ce cas, categorie_id et categorie_name sont indexés. Est-ce exacte ? Et si oui, est-ce utile d'indexer categorie_name en plus de categorie_id ?

create table categorie
(
categorie_id integer not null auto_increment,
categorie_name varchar(100) binary not null,
categorie_description varchar(250) binary,
primary key (categorie_id),
unique (categorie_id,categorie_name)
) ENGINE = InnoDB;

create table rubrique_test (
rubrique_test_id INT NOT NULL,
rubrique_test_name CHAR(30) NOT NULL,
rubrique_test_description VARCHAR(150)
PRIMARY KEY (rubrique_test_id),
unique (rubrique_test_id,rubrique_test_name),
INDEX (categorie_name)
FOREIGN KEY (categorie_id) REFERENCES categorie (categorie_name) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB;

Merci

Répondre à alter

3

dam75, le 8 jun 2009 à 18:52:04
  • +1

Bonjour,
Les index servent à accélerer les rechercher et les tris ... donc si tu veux pouvoir faire une rechercher sur le NOM (WHERE category_name ....) , ou un tri (ORDER BY category_name) il FAUT l'indexer ...

Donc 2 index n'ont rien à voir l'un avec l'autre, ils sont complémentaires ...

Bon courage

Répondre à dam75

4

A.Nonymous, le 8 jun 2009 à 18:52:47
  • +1

L'ajout d'INDEX est une question de performance.
L'ajout d'INDEX est pertinent sur :
- les champs utilisés pour les clés étrangères (ON ... = ...)
- les champs sur lesquels des tris sont très souvent utilisés (ORDER BY ...)
- les champs sur lesquels des filtres sont très souvent utilisés (WHERE ...)

Attention cependant : l'ajout d'INDEX peut également nuire aux performances, en particulier lors de l'insertion ou de la modification des données indexées, et d'autant plus s'il y a plusieurs INDEXes.

Répondre à A.Nonymous

5

 alter, le 8 jun 2009 à 19:30:09

MERCI A.Nonymous et dam75 pour ces réponses qui m'éclairent beaucoup.
Bonne journée !

Répondre à alter