Skip to content

DB Index

Index B-Tree

  • Un index est un objet distinct d'une table (create index vs create table)
  • L'index contient les mêmes data que la table, arrangées de façon différente pour un accès et un update plus rapide = le B-Tree !
  • B-Tree = balanced tree (profondeur égale à tous les niveaux, temps de parcours égal à tous les endroits)
  • Les leaf du tree sont donc au même niveau de profondeur. Elles forment une double linked list entre elles.
  • Chaque leaf contient plusieurs index entries
  • Un index entry contient la colonne indexée en key et le rowid de la table en value.

Index scan

  • Index unique scan : on parcourt le B-Tree et on arrive direct sur une valeur unique (exemple, index sur clé primaire). C'est le type d'accès le plus rapide.
  • Range index scan (ref ou range en mysql): on parcourt le B-Tree, mais plusieurs valeurs existent avec la même clé. On doit donc parcourir la double linked list.

Pour améliorer le range index scan, on peut créer des index multipart (avec plusieurs colonne dedans). Attention, l'ordre des colonnes est important. Si l'index contient (a, b, c), il ne pourra pas être utilisé si on fait un where b par exemple!