Aller au contenu principal

Index

#Indexes

Accélèrent la recherche au prix d'espace et de coûts d'écriture. Ils servent surtout aux clauses WHERE, JOIN et tri.

sqlsql
1create table t(id int, x int);2insert into t values (1,10),(2,20),(3,30);3create index if not exists idx_t_x on t(x);4-- La requête peut utiliser l'index sur x5select * from t where x >= 20;

Note: Dans SQLite en WASM, on ne peut pas inspecter facilement le plan d’exécution, mais le principe reste valable.

#Playground

#Animation: recherche via B-Tree (concept)

1. Page racine
Lire la page racine de l'index; décider de la branche à suivre selon les clés.
Étape 1 / 5

#Exercice : Comparaison de performances avec et sans index

Comparez les performances de requêtes SQL avec et sans index sur une table de grande taille.

#Instructions

  1. Créez une table avec un grand nombre d'enregistrements.
  2. Exécutez une requête de recherche sans index et mesurez le temps.
  3. Créez un index approprié et réexécutez la même requête.
  4. Comparez les performances et expliquez les différences.

#Exemple de requête

sqlsql
1-- Création d'une table de test avec beaucoup de données2create table test_performance(id int, name text, category int);3 4-- Insertion de données de test (simulation)5WITH RECURSIVE6  cnt(x) AS (7     SELECT 18     UNION ALL9     SELECT x+1 FROM cnt10     LIMIT 1000011  )12INSERT INTO test_performance 13SELECT x, 'Name' || x, x % 100 FROM cnt;14