Dans l’article du jour, j’aimerai vous parler des Index dans une base de données.

Comme leur nom l’indique, les index permettent d’indexer des colonnes d’une table. Mais quelle colonne à indexer et pourquoi ? Et bien c’est là la question. Si sur votre application vous avez plusieurs fois des requêtes qui ressortent avec une clause ‘WHERE’ ou ‘INNER JOIN’ faisant référence au même champ, plusieurs fois, il est conseillé de l’indexer.

Pourquoi ? Et bien tout simplement pour une raison d’optimisation. Votre base de données va stoker en mémoire des tables d’index contenant tous ces index. Au lieu d’aller gratter sur le disque-dur du serveur et ainsi le mettre à genoux si on se retrouve avec 1000 clients au même moment, la base de données va regarder en mémoire la table d’index et ressortir votre résultat directement.

Attention tout de même, d’une part, vos select seront optimisés (après les premières requêtes) mais en contrepartie, les enregistrements seront beaucoup plus long car au lieu d’inscrire votre enregistrement sur une table, il sera inscrit sur votre table ciblée mais aussi sur les différentes tables index. Donc réfléchissez bien à cela.

L’astuce consiste à droper les index de la table avant l’enregistrement et à les rajouter après. Ca ne modifiera rien du côté de votre table. Mais vous gagnerez quelques secondes voir quelques heures, selon le nombre d’index que contient votre table, lors de l’enregistrement.

Attention aussi, les clés étrangères ne sont pas indexées, donc cherchez-les bien et indexez-les. C’est l’une des premières causes de ralentissement d’un serveur de bases de données.

Tout ceci je l’ai appris en cours durant la semaine et j’avais envi de vous sensibiliser sur les indexes. C’est l’une des premières causes de ralentissement d’une base de données car la plupart des personnes oublient leur utilité.