CREATE INDEX
Un index est une structure triée, comme l'index d'un livre, qui permet de trouver des lignes sans parcourir toute la table. Il accélère lectures et jointures mais ralentit un peu les écritures.
- index
- performance
- accélérer
- index composite
- index couvrant
Syntaxe
CREATE [UNIQUE] INDEX [IF NOT EXISTS] idx_nomON table (colonne1, colonne2);Exemple
CREATE INDEX idx_orders_customer_dateON orders (customer_id, order_date);SELECT name, tbl_nameFROM sqlite_schemaWHERE type = 'index' AND tbl_name = 'orders';-- Jeu de données : boutique-- Résultat attendu :-- idx_orders_customer_date | ordersÀ retenir
- Candidats prioritaires : les clés étrangères (orders.customer_id), puis les colonnes souvent présentes dans WHERE, JOIN et ORDER BY.
- Un index composite (customer_id, order_date) sert aux filtres sur customer_id seul ou sur customer_id et order_date, mais pas sur order_date seul : c'est la règle du préfixe gauche.
- Piège : appliquer une fonction à la colonne empêche l'usage de l'index. WHERE strftime('%Y', order_date) = '2024' parcourt toute la table, alors que WHERE order_date >= '2024-01-01' AND order_date < '2025-01-01' utilise l'index.
- Piège : chaque index ralentit les INSERT, UPDATE et DELETE et occupe de la place. N'en créez pas « au cas où » : vérifiez l'utilité avec EXPLAIN QUERY PLAN.
- La clé primaire et les contraintes UNIQUE créent déjà leur propre index.
Voir aussi
- EXPLAIN QUERY PLANEXPLAIN QUERY PLAN montre comment SQLite compte exécuter une requête : parcours complet de table (SCAN) ou recherche par index (SEARCH). C'est le premier réflexe face à une requête lente.
- PRIMARY KEYLa clé primaire identifie chaque ligne de façon unique et stable : jamais deux fois la même valeur, jamais NULL. C'est elle que référencent les clés étrangères des autres tables.
- FOREIGN KEYUne clé étrangère garantit qu'une valeur pointe vers une ligne qui existe dans une autre table, comme l'élève d'une absence. Elle empêche les références orphelines et encadre les suppressions.
- WHEREWHERE ne garde que les lignes qui vérifient une condition, avant tout regroupement. C'est le filtre de base pour cibler un client, une période, un statut ou une plage de valeurs.